我在 MySQL 数据库中有 4 个表,suppliers
, categories
, subcats
& listings
。
Listings 是一个连接表,允许供应商、类别和子目录之间的多对多关系,每个的结构如下
供应商
sp_id sp_name sp_email
1 Apple info@apple.co
2 Samsung info@samsung.co
类别
cat_id cat_name
3 Electronics
4 Software
子猫
subcat_id subcat_name cat_id
5 Mobiles 3
6 Computers 3
列表
list_id sp_id subcat_id
1 1 5
2 1 6
我正在尝试将数据组合并提取在一起,因此每个供应商只有一个条目,其中列出了多个子类别,例如:
结果
sp_id sp_name sp_email cat_name / cats subcat_name / subcats
1 Apple info@apple.co Electronics, Software Mobiles, Computers
2 Samsung info@samsung.co Electronics Mobiles
目前我有以下查询
SELECT *
FROM suppliers as s
LEFT JOIN listings as l ON s.sp_id=l.sp_id
LEFT JOIN subcats as p ON p.subcat_id=l.subcat_id
LEFT JOIN categories as c ON c.cat_id=p.cat_id
ORDER BY s.sp_id
但是,这会为每个供应商输出多个条目,每个类别或与其关联的子类别都有一个条目。有没有更简单的方法可以通过 SQL 或 PHP 中的多个查询来完成?
我目前对 mySQL 的了解有限,任何朝着正确方向提出的建议或建议将不胜感激。