MySQL: Zugehörige Kategorien und Artikel

tvtotal

Erfahrenes Mitglied
Hallo, ich habe 3 Tabellen und möchte folgendes abrufen:
Alle Kategorien, dem die Artikel in einer bestimmten Kategorie zugeordnet sind und ein bestimmtes Artikelmerkmal (ART.MANU) haben. Die Artikel sollen auch gezählt werden. Vielen Dank.


Tab1: CAT
ID TITLE

Tab2: ART2CAT
ID CAT_ID ART_ID

Tab3: ART
ID TITLE MANU

Ich habe es glaube ich, fast:

SQL:
select CAT.ID, CAT.TITLE, count(ART.ID),  group_concat(CAT.TITLE) 
from ART inner join ART2CAT pc1  on (pc1.ART_ID =  ART.ID and pc1.CAT_ID =  '123') 
inner join ART2CAT pc2  on (pc2.ART_ID = ART.ID) 
inner join CAT on (CAT.ID = pc2.CAT_ID) 
where 1 and ART.MANU= 'ABC' group by CAT.ID
 
pc1.CAT_ID = '123' hat nix im JOIN verloren. Das gehört in den WHERE

Deine Beschreibung und dein Versuch passen nicht aufeinander. Eines von Beiden ist falsch.

Hier das SQL, das mMn zur Beschreibung passt.
SQL:
SELECT
    cat.id,
    cat.title,
    COUNT(a.art_id) AS art_count,
    GROUP_CONCAT(art.title)
FROM
    -- Inner Select um alle artikel zu finden, die in der Kategorie 1 vorhanden sind und manu='abc' haben
    (
        SELECT ac.art_id
        FROM art, art2cat ac
        WHERE
            art.id = ac.art_id
            AND art.manu= 'abc'
            AND ac.cat_id =  1
    ) a,
    -- Wieder mit art2cat verknüpfen um alle Kategorien zu finden, in denen diese Artikel vorkommen
    art2cat ac2,
    -- Kategorie und Artikel verknüpfen um die lesbaren Informationen zu erlangen
    cat,
    art
WHERE
    a.art_id = ac2.art_id
    AND ac2.cat_id = cat.id
    AND ac2.art_id = art.id
GROUP BY
    cat.id

Code:
id    title    art_count    GROUP_CONCAT(art.title)
1    test1    2    art3,art1
2    test2    1    art1
3    test3    2    art3,art1
4    test4    1    art1

Nachtrag:
Hab vergessen den SQLFiddle Link zu meinem Test zu posten
http://sqlfiddle.com/#!9/b055b6/1
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück