2017-06-19 111 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