Denksportaufgabe für MySQL-Gurus :-)
Marko
- datenbank
Hallo MySQL Gurus,
ein kniffliges MySQL Problem:
Ich habe 2 Tabellen:
Tabelle Links
LinkID (Primärindex)
CatID (Kategoriezuordnung, Verknüpfung mit jetzt unwichtiger 3. Tabelle)
Diverse Datenfelder
Tabelle Kommentare
LinkID (jeder Kommentar wird einem Link aus Tabelle Links zugeordnet)
Kommentartext
Diverse Datenfelder
Die Abfrage soll mir nun Liefern:
Alle Datensätze aus Tabelle Links, die zu einer Bestimmten CatID gehören:
SELECT * FROM Links WHERE CatID=45
Dazu aber noch die Anzahl der Kommentare in Tabelle Kommentare die zu jedem Ergebnissatz gehören:
SELECT COUNT(LinkID) FROM Kommentare WHERE LinkID= ?Entsprechende Zeilen LinkID im 1.Select Statement?
Ein UNION Statement geht nicht (kein MySQL 4.0 zur Verfügung), das UNION mit Temporären Tabellen
nachbilden ist eigentlich auch kein Problem, aber was gebe ich im Count-Statement für die LinkID an ?
Die muss ja auf die Entsprechende Zeile Passen.
Die Möglichkeit 1 Query pro Zeile aus PHP abzustzen geht natürlich, ist mir aber aus Performance Gründen unlieb.
vielen Dank falls mir da jemand einen kleinen Tip geben kann, bin in SQL echt nicht fit.
Gruss
Marko
salute marko,
vielleicht mit 'join'?
bsp.:
SELECT * FROM links JOIN kommentare WHERE LinkIDA = LinkIDB;
gruss -> jo
Hallo MySQL Gurus,
ein kniffliges MySQL Problem:
Ich habe 2 Tabellen:
Tabelle Links
LinkID (Primärindex)
CatID (Kategoriezuordnung, Verknüpfung mit jetzt unwichtiger 3. Tabelle)
Diverse Datenfelder
Tabelle Kommentare
LinkID (jeder Kommentar wird einem Link aus Tabelle Links zugeordnet)
Kommentartext
Diverse Datenfelder
Die Abfrage soll mir nun Liefern:
Alle Datensätze aus Tabelle Links, die zu einer Bestimmten CatID gehören:
SELECT * FROM Links WHERE CatID=45
Dazu aber noch die Anzahl der Kommentare in Tabelle Kommentare die zu jedem Ergebnissatz gehören:
SELECT COUNT(LinkID) FROM Kommentare WHERE LinkID= ?Entsprechende Zeilen LinkID im 1.Select Statement?
Ein UNION Statement geht nicht (kein MySQL 4.0 zur Verfügung), das UNION mit Temporären Tabellen
nachbilden ist eigentlich auch kein Problem, aber was gebe ich im Count-Statement für die LinkID an ?
Die muss ja auf die Entsprechende Zeile Passen.
Die Möglichkeit 1 Query pro Zeile aus PHP abzustzen geht natürlich, ist mir aber aus Performance Gründen unlieb.
vielen Dank falls mir da jemand einen kleinen Tip geben kann, bin in SQL echt nicht fit.
Gruss
Marko
Hi,
der LEFT JOIN ist dein Freund:
SELECT COUNT(c.LinkID), l.* AS komm_count
FROM links AS l
LEFT JOIN kommentare AS c
ON l.LinkID = c.linkID
WHERE l.CatID = 45
GROUP BY l.linkID
^ohne garantie ;)
Jan
--
Vielen Dank, es scheint zu funktionieren.
Gruss
Marko