簡體   English   中英

MySQL左連接條件相同的列

[英]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.

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