Eine Tabelle 2 mal joinen
phil
- datenbank
Hallo.
Ich hab folgende tabelle:
categoryid subcategoryid categoryname
1 0 Sport
2 1 Handball
3 1 Fußball
4 1 Hockey
Gegeben: Die Sucheingabe "Sport"
Gewünscht: Alle Unterkategorien von Sport - sprich alle kategorien mit der subcategoryid "1".
Mein Versuch:
SELECT a.categoryid, b.categoryname
FROM board_category AS a
INNER JOIN board_category AS b ON b.categoryid=a.categoryid
WHERE a.categoryname='Sport'
Mein Ergebnis: array(0) { }
Könnt ihr mir auf die Sprünge helfen?
Lg, phil
Hi,
categoryid subcategoryid categoryname
1 0 Sport
2 1 Handball
3 1 Fußball
4 1 HockeyGegeben: Die Sucheingabe "Sport"
Gewünscht: Alle Unterkategorien von Sport - sprich alle kategorien mit der subcategoryid "1".
Da würde ich eher zu einer Subquery als zum JOIN greifen.
MfG ChrisB
Hi.
Da würde ich eher zu einer Subquery als zum JOIN greifen.
Gut dann hilf mir doch bitte ein wenig wie sowas aussehen könnte.
Gruß, phil
Hi,
Da würde ich eher zu einer Subquery als zum JOIN greifen.
Gut dann hilf mir doch bitte ein wenig wie sowas aussehen könnte.
Ich nahm an, der Hinweis wäre schon Hilfestellung genug ...
Du liest alle Datensätze mit subcategoryid gleich der categoryid des Eintrages mit categoryname = "Sport" aus, die du in einer Subquery ermittelst. (Damit die DB da nicht meckert, dass die Subquery nur einen Eintrag zurückliefern darf, nutzt du in dieser entweder die LIMIT-Klausel, oder du vergleichst in der äusseren Query die ID mit dem IN-Operator, dann gibt es diesbezüglich gar nicht erst etwas zu meckern, auch wenn es sich letzten Endes in der Praxis eh nur um einen einzelnen Datensatz handelt, der von der Subquery zurückgegeben wird.)
MfG ChrisB
Du liest alle Datensätze mit subcategoryid gleich der categoryid des Eintrages mit categoryname = "Sport" aus, die du in einer Subquery ermittelst. (Damit die DB da nicht meckert, dass die Subquery nur einen Eintrag zurückliefern darf, nutzt du in dieser entweder die LIMIT-Klausel, oder du vergleichst in der äusseren Query die ID mit dem IN-Operator, dann gibt es diesbezüglich gar nicht erst etwas zu meckern, auch wenn es sich letzten Endes in der Praxis eh nur um einen einzelnen Datensatz handelt, der von der Subquery zurückgegeben wird.)
puhh...
wohin muss den der subquery genau und wie bekomt der äußere query die daten?
Ich hab damit null Erfahrung =/
Hi,
wohin muss den der subquery genau und wie bekomt der äußere query die daten?
Ich hab damit null Erfahrung =/
Dann solltest du vielleicht mal das Handbuch deines DBMS konsultieren.
Unter der puren Annahme, dass es vielleicht MySQL sein könnte, das du verwendest (denn selbst dazu Angaben zu machen, hast du ja versäumt, obwohl du beim Erstellen eines neuen Threads bei Auswahl der Kategorie Datenbank explizit darauf hingewiesen wirst!) - dessen Handbuch hat ein eigenes Kapitel darüber, 12.2.9. Subquery Syntax.
MfG ChrisB
Hallo,
INNER JOIN board_category AS b ON b.categoryid=a.categoryid
WHERE a.categoryname='Sport' [/code]
Na vielleicht solltest du dann auch b.subcategoryid (ich täte sie aber lieber umbenennen in "parencategoryid" - rein vom logischen Zusammenhang) und a.categoryid miteinander verknüpfen ...
Ciao, FFR