簡體   English   中英

所有產品列表以及用戶保存的產品

[英]List of all products with user's saved products

我在嘗試查詢查詢時遇到問題,該查詢將使我能夠顯示所有產品的列表以及用戶是否保存了任何給定的產品。

我在查詢中涉及3個表(用戶,product_user,產品)。 我正在通過聯接三個表並使用以下查詢檢查user_id是否為null來確定用戶是否保存了產品:

SELECT products.*, users.id as 'user_id' FROM products
       LEFT JOIN product_user ON  products.id = product_user.product_id
       LEFT JOIN users ON product_user.user_id = users.id AND users.id =1;

但是,當用戶保存產品(user_id空版本和user_id = 1版本)時,這將返回重復的行。 由於在這種情況下行不是不同的,所以獨特的語句將不起作用。 有什么最佳實踐可以確保我只獲得不同的產品? 無論用戶是否保存了產品,我都需要獲取整個產品列表。

這是在MySQL中查詢。

我認為這可以滿足您的需求:

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僅一次,並且必須與您傳入的內容匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM