[英]MySQL Left Join With And Condition To Same Column
I have tables like this: 我有这样的表:
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)
Now, I would like query Products which have 2 attributes in the tbl_product_attribute
. 现在,我想查询在
tbl_product_attribute
具有2个属性的tbl_product_attribute
。
Example like : 像这样的例子:
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";
So I'd like to get Products that has exactly 2 values at tbl_omx_product_attribute
, which is 1759 & 1776. 所以我想在
tbl_omx_product_attribute
处获得正好具有2个值的tbl_omx_product_attribute
,分别是1759和1776。
But query like above won't show any result unless I use relation OR
instead of AND
. 但是,除非我使用关系
OR
而不是AND
否则上述查询不会显示任何结果。
The question what is the query to retrieve Products that have 2 values at the tbl_product_attribute ? 问题是什么查询来检索tbl_product_attribute处具有2个值的产品? thank you
谢谢
To get products which have two attributes: 要获得具有两个属性的产品:
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;
You can filter data as per your required output by just adding where clause. 您只需添加where子句即可根据所需的输出过滤数据。
Maybe I misunderstood you, but if you want the product to have both attribute options you can query: 也许我误会了您,但是如果您希望该产品同时具有两个属性选项,则可以查询:
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%'
You can try this: 您可以尝试以下方法:
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.