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