2017-06-19 114 views
0

我有一个问题,试图找出一个查询,这将允许我显示所有产品的列表以及显示用户是否已保存任何给定产品。使用者保存的产品列表中的所有产品

我有3个表涉及查询(用户,product_user,产品)。 我determing用户是否已通过加入三个表和检查,如果user_id是空或不与下面的查询保存的产品:当用户节省了产品

​​

但是这将返回重复的行(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只返回一行。该行将有user_id - 只有一次,它必须匹配你通过的任何东西。

+0

工作完美!谢谢! – Michael