2017-11-01 11 views
0

Iは、ユーザのテーブルを持っているから、その行を削除するかどうかをチェック、Iは、ユーザごとに多くの購入で、購入のテーブルを持っています。MySQLは、関連テーブルの任意の行に値が一致し、その結果

私は、特定の製品を購入していないすべてのユーザーを選択します。

がある私は理解に苦しんでいます:ユーザーの購入は、選択と一致していることならばどのように各ユーザーのために私がチェックした後、私は結果から、これらのユーザーを除外する方法について説明します。

答えて

1

これは簡単なSELECT声明、参加して、副選択によって行われるべきです。私のExamplequeryは、特定のアイテムを購入していないすべてのユーザーを返します。クエリ内の

SELECT DISTINCT User.Id, User.Username 
FROM User 
LEFT JOIN Purchases ON User.Id = Purchase.UserId 
WHERE 
(SELECT DISTINCT COUNT(User.Id) 
FROM User 
LEFT JOIN Purchases ON User.Id = Purchase.UserId 
WHERE Purchase.ItemId = ParameterItemId) = 0 

DISTINCTには二重のエントリが存在しないことを確認します。 あなたは私たちにテーブルの表情を教えてくれていないので、私はあなたにこの擬似コードを与えることができます。最初の試行では機能しない可能性があり、結合と副選択がどのように機能するかを理解するのに役立ちます。

JOINについて詳しくは、thisのドキュメントをご覧ください。副選択の例をもっと見るには、thisを参照してください。

+0

私は今、ありがとう、ありがとう。 – seventeen

関連する問題