簡體   English   中英

左連接結合 Where 和 On 子句 MySQL

[英]Left Join combined with Where and On Clause MySQL

我對 SQL/PHP 很陌生,我正在嘗試將兩個表 LEFT JOIN 與第二個表 LEFT JOINed 兩次。 這里的場景:我有兩個表,products 和 productvariations。 在 productvariations 表中,我還有一列“colorvalue”,它告訴用戶它是產品的標准顏色還是特殊顏色。

產品

idproducts | product | checked
-------------------------------
1          | testpr1 | 0
2          | testpr2 | 0
...

產品變化

productid | colorvalue | price
-------------------------------
1         | 0          | 12.50
1         | 1          | 10.25
2         | 0          | 14.50
2         | 1          | 13.00
...

現在我想要做的是選擇產品的所有列,然后將產品變體表的兩倍與它們左連接,以便為價格提供兩個不同的附加列。 但只有那些檢查值 = '0' 的產品。 從不同的其他問答我設置了這段代碼,但不知何故它沒有給我任何結果。 有人可以幫忙嗎?

SELECT products.*, productvar1.price_single, productvar1.price_palette, productvar2.price_single, productvar2.price_palette, productvar1.price_specialconditions, productvar1.price_colorchange 
FROM products 
LEFT JOIN productvariations AS productvar1 
ON products.idproducts = productvar1.product AND productvar1.colorvlaue = '0' 
LEFT JOIN productvariations AS productvar2 
ON products.idproducts = productvar2.product AND productvar2.colorvalue = '1'
WHERE products.checked = '0' LIMIT 200;

您的查詢有一些拼寫錯誤,當然 select 子句中有我在表中沒有看到的列,但現在以下查詢根據表中的信息工作。

SELECT products.*, 
       productvar1.colorvalue as colorvalue1,
       productvar1.price as price1,
       productvar2.colorvalue as colorvalue2,
       productvar2.price as price2
FROM PT1 products 
LEFT JOIN productvariations AS productvar1 
ON products.idproducts = productvar1.productid AND productvar1.colorvalue = '0' 
LEFT JOIN productvariations AS productvar2 
ON products.idproducts = productvar2.productid AND productvar2.colorvalue = '1'
WHERE products.checked = '0' LIMIT 200;

db<>fiddle 中的演示

暫無
暫無

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

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