2017-06-19 8 views
0

私はすべての製品の一覧を表示したり、ユーザーが特定の製品を保存しているかどうかを表示できるクエリを見つけようとしています。ユーザーの保存した製品を使用しているすべての製品のリスト

私は3つのテーブルをクエリに含んでいます(users、product_user、product)。 は、私はuser_idのは、次のクエリではnullであるかどうか、ユーザーは3つのテーブルを結合しかつチェックすることによって、製品を保存しているかどうかをdetermingています:ユーザーが製品を保存しているとき

​​

しかし、これは重複行を返します。 (user_id nullバージョンとuser_id = 1バージョン)。この場合、行が区別されないため、明確なステートメントは機能しません。私は別の製品だけを返すようにするためのベストプラクティスは何ですか?ユーザーがそれを保存したかどうかに関わらず、製品のリスト全体を取り戻す必要があります。

これはmysqlで照会されています。

答えて

1

私はこれが何をしたいんだと思う:

select p.*, 
     (select pu.user_id 
     from product_user pu 
     where pu.product_id = p.id and pu.user_id = 1 
     limit 1 
     ) as user_id 
from products p; 

これはproductごとに1つだけの行が返されます。行にはuser_idが1回だけ入っており、渡すものと一致する必要があります。

+0

完璧に機能しました!ありがとうございました! – Michael

関連する問題