MySQL データベースにsuppliers
, categories
, subcats
&の 4 つのテーブルがあります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
データを組み合わせて抽出しようとしているため、サプライヤーごとに 1 つのエントリしかなく、複数のサブカテゴリがリストされています。
結果
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
ただし、これはサプライヤごとに複数のエントリを出力し、関連するカテゴリまたはサブカテゴリごとに 1 つのエントリを出力します。SQL を介して、または PHP で複数のクエリを使用してそれを行う簡単な方法はありますか?
私の現在の mySQL に関する知識は限界に達しており、正しい方向への提案やアドバイスをいただければ幸いです。