2017-12-08 12 views
0

すべての製品名を取得し、その名前を1列に連結するクエリがあります。しかし、私はそれを動作させる方法を理解できません。ここでは、クエリです。このクエリを修正するにはどうすればよいですか? GROUP_CONCATの使用

SELECT package_id, 
GROUP_CONCAT 
(
    SELECT c.product_name FROM tbl_product c WHERE c.product_id IN 
    (
     SELECT a.product_id FROM tbl_package_detail a WHERE a.package_id = b.package_id 
    ) 
    ORDER BY c.product_id 
) 
FROM tbl_package b 
GROUP BY package_id 

こと注:

SELECT c.product_name FROM tbl_product c WHERE c.product_id IN 
(
    SELECT a.product_id FROM tbl_package_detail a WHERE a.package_id = b.package_id 
) 
ORDER BY c.product_id 

は私が必要とするすべての製品名を返します。 GROUP_CONCATを正しく使用しているかわかりません。

すると、エラーメッセージ:

あなたのSQL構文でエラーが発生しています。右の構文は

答えて

1

「をSELECT c.product_name FROM tbl_product c WHERE c.product_id IN」を近く使用するために、次の

SELECT 
    b.package_id, 
    GROUP_CONCAT(c.product_name ORDER BY c.product_id) ProductList 
FROM tbl_package b 
LEFT JOIN tbl_package_detail a ON a.package_id = b.package_id 
LEFT JOIN tbl_product c ON c.product_id=a.product_id 
GROUP BY b.package_id 

GROUP_CONCATSUM/AVG/MIN/MAX/COUNTのような集約関数で試してみてください、あなたのMariaDBサーバーのバージョンに対応するマニュアルを確認してください。

+0

ありがとうございます!私は今考えを得た。しかし、あなたの答えに 'tbl_product'テーブルがありません。 –

+0

ああ、そうです。申し訳ありませんが、私はそれをスキップしました。私は自分の答えを更新しました。 ) – Leran2002

関連する問題