2017-12-08 4 views
0

Ich habe eine Abfrage, die alle Produktnamen erhalten und die Namen zu 1 Spalte verketten würde. Aber ich kann nicht herausfinden, wie es funktioniert. Hier ist die Abfrage.Wie man diese Abfrage repariert? Mit 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 

Beachten Sie, dass:

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 

Gibt alle Produktnamen ich brauche. Ich bin mir nicht sicher, ob ich GROUP_CONCAT richtig verwende.

Fehlermeldung:

Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in der Bedienungsanleitung zu Ihrem MariaDB Server-Version entspricht, die für die richtige Syntax in der Nähe verwenden ‚SELECT c.product_name FROM tbl_product c WHERE c.product_id IN

Antwort

1

Versuchen Sie, die folgende

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_CONCAT eine Aggregatfunktion wie SUM/AVG/MIN/MAX/COUNT ist.

+0

Danke! Ich habe jetzt die Idee. Aber Ihre Antwort fehlt die 'tbl_product' Tabelle. –

+0

Oh, ja. Entschuldigung, ich habe es übersprungen. Ich habe meine Antwort aktualisiert.) – Leran2002