phil: Eine Tabelle 2 mal joinen

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

  1. Hi,

    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".

    Da würde ich eher zu einer Subquery als zum JOIN greifen.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. 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

      1. 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

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. 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 =/

          1. 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

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
  2. 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