我迷失了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
非常感谢!
答案 0 :(得分:1)