2017-01-04 12 views
0

ありがとうございます。私はmysqlデータベースを使用しています。2つのテーブルを結合し、他のテーブルに存在しないデータの行を表示するSQLクエリ

私は3つのテーブルcarts,coursesおよびchecksを持っています。私はカートとコーステーブルを組み合わせたデータ行が必要で、チェックテーブルには存在しないはずです。私はphp関数とカートテーブルのstatus = 'Completed'からuserid = $ idを渡しています。ここで、ユーザーIDはカートと小切手の両方で同じです。

私は、このSQLクエリ

select c.* 
from carts c 
where NOT EXISTS (select 1 
        FROM checks 
        WHERE checks.order_id = c.order_id 
        AND c.exam_id = checks.exam_id) 
AND c.userid = $id 
AND c.status ='Completed' 

を書かれている。しかしこれは私がテーブルに参加していなかったので、代わりにそれは受験番号を示しています、試験の名前が表示されません。私はその

コーステーブルについて少し混乱しています:

id | name | 
1 | PMP  | 
2 | CAPM | 
3 | Prince2 | 

カートテーブル:

id |userid | username | orderid    | exam_id |status 
    1 |13  | Gautham |437b310v671N888M6720 | 1  |Completed 
    2 |13  | Gautham |437b310v671N888M6720 | 2  |Completed 
    3 |13  | Gautham |437b310v671N888M6720 | 3  |Completed 
    4 |14  | Rakesh |678g310v671N888M6720 | 3  |Completed 

をチェックテーブル:

id |userid | username | orderid    | exam_id | 
    1 |13  | Gautham |437b310v671N888M6720 | 1  | 
    2 |13  | Gautham |437b310v671N888M6720 | 2  | 

「完了」= Iは、カートやコースのテーブルを組み合わせた出力を必要とするが、データはチェックテーブルに存在してはならないと私は私のPHPの機能やカート、テーブルの状態からユーザーID = $ IDを渡しています:

1 |13  | Gautham |437b310v671N888M6720 | Prince2 |Completed 
2 |14  | Rakesh |678g310v671N888M6720 | Prince2 |Completed 
+0

私はそれが何も表示されていないのphpMyAdminでこのクエリを実行するMySQLデータベース –

答えて

0

これを試してみてください:

SELECT c.*, cs.* 
FROM carts c 
LEFT JOIN courses cs ON c.exam_id = cs.id 
LEFT JOIN checks ch ON c.userid = ch.userid AND c.exam_id = ch.exam_id 
WHERE c.userid = $id AND c.status ='Completed' AND ch.id IS NULL 
0
SELECT * FROM COURSES JOIN CARTS 
ON COURSES.ID=CARTS.ID WHERE CARTS.USERID NOT IN 
(SELECT USERID FROM FROM CHECKS) 
+0

を使用しています –

1

それはあなたがあなたのアウトプット予想を得ることを願っています試してみてください。

あなたに関するさらなる質問がある場合は、私をノックして落ちる可能性があります。

SELECT carts.id,carts.userid,carts.username,carts.orderid,carts.exam_id,carts.status,courses.name FROM carts,courses where carts.exam_id = courses.id and carts.status="Completed" and carts.id not in (SELECT exam_id FROM checks WHERE 1)

enter image description here

関連する問題