我有两个表,products
和product_tags
。
产品表;
product_id int
name varchar
description text
price decimal(12,2)
status enum
sale int
hit int
date_add datatime
date_update datetime
product_tags表;
tag_id int
product_id int
tag varchar
其中product_tags
表与products
具有一对多的关系,例如:
tag_id | product_id | tag
1 1 tag1
2 1 tag2
3 1 tag3
我想从单个查询中提取数据。 (产品和产品标签)。
答案 0 :(得分:2)
使用类似的东西:
SELECT *
FROM products p
INNER JOIN product_tags pt
ON (p.product_id = pt.product_id)
如果您想要获取所有产品而不管它们是否有标签,请使用OUTER JOIN。
SELECT *
FROM products p
LEFT OUTER JOIN product_tags pt
ON (p.product_id = pt.product_id)
如果您尝试将每个产品的所有标记组合成一个以逗号分隔的列表,那么像这样的东西可能在mysql中起作用:
SELECT p.product_id, GROUP_CONCAT(pt.tag SEPARATOR ',')
FROM products p
LEFT OUTER JOIN product_tags pt
ON (p.product_id = pt.product_id)
GROUP BY p.product_id;
有关GROUP_CONCAT的进一步文档,请参阅MySQL Reference Manual