[英]MySQL Left Join With And Condition To Same Column
我有這樣的表:
tbl_product
===========
product_id (PK)
tbl_product_attribute
=====================
pro_attr_id (PK)
pro_attr_pro_id (FK to tbl_product)
pro_attr_attr_opt_id(FK to tbl_attribute_option)
現在,我想查詢在tbl_product_attribute
具有2個屬性的tbl_product_attribute
。
像這樣的例子:
SELECT "p".*
FROM "tbl_omx_product" "p"
LEFT JOIN "tbl_omx_product_attribute" "proAttr" ON "proAttr".pro_attr_pro_id = p.product_id
WHERE
(pro_attr_attr_opt_id LIKE '%1759%' ) AND
(pro_attr_attr_opt_id LIKE '%1776%' )
GROUP BY "p"."product_id";
所以我想在tbl_omx_product_attribute
處獲得正好具有2個值的tbl_omx_product_attribute
,分別是1759和1776。
但是,除非我使用關系OR
而不是AND
否則上述查詢不會顯示任何結果。
問題是什么查詢來檢索tbl_product_attribute處具有2個值的產品? 謝謝
要獲得具有兩個屬性的產品:
SELECT p.*
FROM tbl_omx_product p
LEFT JOIN tbl_omx_product_attribute proAttr ON proAttr.pro_attr_pro_id = p.product_id
GROUP BY p.product_id
having count(*)=2;
您只需添加where子句即可根據所需的輸出過濾數據。
也許我誤會了您,但是如果您希望該產品同時具有兩個屬性選項,則可以查詢:
SELECT "p".*
FROM "tbl_omx_product" "p"
JOIN "tbl_omx_product_attribute" "proAttr1"
ON "proAttr1".pro_attr_pro_id = p.product_id
AND "proAttr1".pro_attr_attr_opt_id LIKE '%1759%'
JOIN "tbl_omx_product_attribute" "proAttr2"
ON "proAttr2".pro_attr_pro_id = p.product_id
AND "proAttr2".pro_attr_attr_opt_id LIKE '%1776%'
您可以嘗試以下方法:
SELECT p.*
FROM tbl_omx_product AS p
LEFT JOIN tbl_omx_product_attribute AS proAttr ON p.product_id = proAttr.pro_attr_pro_id
WHERE
(pro_attr_attr_opt_id LIKE '%1759%' ) AND
(pro_attr_attr_opt_id LIKE '%1776%' )
GROUP BY p.product_id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.