为什么我的MySQL Left Join查询结果混乱了?

时间:2012-11-29 06:49:01

标签: mysql sql left-join

我迷失了MySQL查询(运行MySQL 5.0.88

我有两个表,一个来自不同products的{​​{1}},另一个来自brands(=应用过滤产品,因此不是每个应用都显示每个产品)。

我正在尝试查询以获取品牌列表,具体取决于用户运行的应用程序,如下所示:

applications

问题是,一旦我SELECT p.brand_name , p.id , p.seller_id , a.seller_id , a.info , a.name , a.application_match_keys FROM applications AS a LEFT JOIN products AS p ON a.seller_id = p.seller_id AND p.brand_name IN ( <<QueryString: application_match_keys>> ) WHERE p.active = "1" AND a.seller_id = "2222222222222" GROUP BY p.brand_name ORDER BY p.brand_name ASC 我不再获得正确的结果,例如:

left join

如果用户在应用程序A中,他的品牌列表应该只包含来自具有相应match_keys(= A)的活动产品的品牌,所以我希望该查询返回

=== products ===
id        brand_name  seller_id
123       A           John
111       A           John
124       A           John
999       B           John
xx1       C           John

=== applications ===
name    seller_id   info  application_match_keys
red     John        foo   A
blue    John        bar   B,C

但我总是得到正确的品牌名称与错误匹配的应用程序数据,如:

p.brand_name  application   info
A             red           foo

问题:
有没有办法在单个查询中查询,或者我是否必须首先查询p.brand_name application info A blue bar 然后再次循环/查询以获取我需要的应用程序数据?一个查询也必须可以吗?

感谢您的帮助!

修改
得到它了。这是它的工作原理:

active products' brands with matching application key

非常感谢!

1 个答案:

答案 0 :(得分:1)

如何使用FIND_IN_SET

AND FIND_IN_SET(p.brand_name, a.application_match_keys) <> 0