2017-09-23 11 views
0

私は2つのSQLテーブル "user"と "entries"を持っています。最初のテーブルにのみ存在し、2番目のテーブルに存在しない場合は、値を確認してください

ユーザーが最初のテーブル "user"に存在するかどうか、そしてユーザーがテーブル "Entries"のエントリを作成したかどうかを確認する必要があります。

評価システムのようなものを作りたいと思います。ユーザーがテーブル "user"に存在し、テーブル "entries"にエントリがない場所。すべてのユーザーが1つのエントリしか作成できないためです。

1つのクエリでのみ行うことはできますか。どのようにすることができますか?

SELECT id FROM user 
WHERE id = $userID 
AND NOT EXISTS (SELECT * FROM entries where user_id = $userID); 

それが返されます:

が、私は2つのクエリ

SELECT COUNT(*) amount FROM user 

SELECT COUNT(*) quantity FROM entries WHERE user_id = $userID 
+0

私は2つのクエリの関係は表示されません。ここでいくつかのサンプルデータを提供できますか? –

+0

「LEFT JOIN ... IS NULL」を参照してください。 –

答えて

1

あなたが使用するべきでそれを行うことができる方法のみを知っている演算子 "NOT EXISTS"ユーザーがテーブル "user"に存在し、テーブル "entries"にエントリがない場合にのみ行が表示されます。

+0

ありがとうございました!私は少し改善している。存在は遅いです。 INは、ID = $ユーザーID とID NOT INは(エントリーSELECT * FROMユーザー FROM https://mariadb.com/kb/en/library/exists-to-in-optimization/ SELECT IDを使用する必要がありますどこuser_id = $ userID); – Mark

関連する問題