Abfrage über 2 tabellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage über 2 tabellen

    Hallo,

    also ich habe zwei Tabellen. In der einen habe ich die felder:

    Tabelle Kategorie:

    id
    title (name)
    parentid


    Tabelle Daten:

    id
    katid (verknüpfung zur Tabelle Kategorie)
    beschreibung
    usw.


    So jetzt möchte ich aus der Tabelle alle Namen ausgelesen haben und aus der Tabelle die Anzahl der Verknüpften Daten haben.

    Also z.b.

    Max Mustermann
    2 datensätze

    Funktioniert auch soweit, wenn in Tabelle Daten mindestens 1 Datensatz vorhanden ist.

    Hier meine Query:

    PHP-Code:
    SELECT k.idk.titlek.statuscountd.katid ) AS ANZAHL FROM kategorie kdaten d WHERE k.status AND k.id d.katid  GROUP BY k.id 
    SObald aber in Daten keine Datensätze zum Namen vorhanden sind, wird der Name auch nicht ausgegeben. Ok ist klar, aber wie erreiche ich es das trotzdem der Name in dieser Form ausgegeben wird:

    Tom Tölle
    0 Datensätze

    Gruß

    hamstah

  • #2
    http://www.php-resource.de/forum/sho...threadid=28292

    Sorry, dass die Tabellen- und Spaltennamen nicht 100%ig deinen entsprechen. Aber soviel Transferleistung ist sicher drin.

    Kommentar


    • #3
      Hmm ok aber wie ist es dann mit dem count??? ich will ja wissen wieviele datensätze von jedem namen da sind.....

      Kommentar


      • #4
        count( d.katid )

        Kommentar


        • #5
          ok hab die query jetzt so geändert:

          Code:
          SELECT
          	t1.id, t1.title, t1.status, t2.katid, count( t2.katid ) AS ANZAHL
          
          
          FROM
          	kategorie t1
          	INNER JOIN daten t2 ON t1.id = t2.katid GROUP BY t1.id
          Habe jetzt aber immer noch das gleiche Ergebnis. Ich will aber ja auch alle Namen ausgegeben haben wo in count 0 zurück gibt.

          Gruß

          Hamstah

          Kommentar


          • #6
            Original geschrieben von hamstah
            ...Ich will aber ja auch alle Namen ausgegeben haben wo in count 0 zurück gibt.
            Und warum nutzt du dann einen inner join
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Kommentar


            • #7
              Hat offensichtlich nur bis zur ersten Query gelesen und dann ohne verstand kopiert.

              Kommentar


              • #8
                tja ich hatte mir ja vorher ne query ohne join gebaut....bin was das thema angeht absolut ein snobe....dann ließ mal die antwort auf meine frage....hab es dann ausporbiert....ok ist es auch mit meiner query möglich??? ich denke die bedingung müsste geändert werden...nur wo und wie genau???

                Kommentar


                • #9
                  1. Lies die antwort von HHCM
                  2. Lies den Thread, den ich verlinkt habe
                  • In Ruhe
                  • Mit Verstand
                  • Bis zum Ende
                  durch!

                  Kommentar


                  • #10
                    ok hab mir das jetzt durchgelesen und denke das hier ist die richtige zumindest fast:

                    Code:
                    SELECT
                    	t1.zahl, t2.quadrat
                    FROM
                    	tabelle1 t1
                    	RIGHT JOIN tabelle2 t2 USING(tab1_id)
                    jedoch sind die spalten bei mir nicht identisch

                    id -> katid

                    also kann ich USING ja nicht benutzen. habe auch die Datenbank bei mir installiert zum testen. jedoch führt bei änderung in

                    Code:
                    SELECT t1.id, t1.title, t2.katid
                    FROM daten t2
                    LEFT JOIN kategorie t1 ON t1.id = t2.katid
                    es auch nicht zum ergebnis. ok einfache frage? ist es bei abänderung meiner ersten query auch möglich das ergebnis zu erzielen????

                    Gruß

                    Hamstah

                    Kommentar


                    • #11
                      ok einfache frage? ist es bei abänderung meiner ersten query auch möglich das ergebnis zu erzielen????
                      Ok, einfache Antwort! Ja.

                      Kommentar


                      • #12
                        ok jetzt funktioniert es. habe es so gelöst:

                        Code:
                        SELECT t1.id, t1.title, t2.katid, count( t2.katid )
                        FROM kategorie t1
                        LEFT JOIN daten t2 ON t1.id = t2.katid
                        WHERE STATUS =3
                        GROUP BY t1.id
                        Danke

                        Kommentar


                        • #13
                          Aaah Jetz informierst du dich am besten noch zum unterschied zwischen LEFT/RIGHT und INNER Joins damit dir sowas in Zukunft nicht mehr passiert...
                          gruss Chris

                          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                          Kommentar


                          • #14
                            Hab ich gerade schon gesehen anhand des Beipiels.....Zumindest hab ich jetzt das erste mal mit Joins gearbeitet. hab mich immer dagegen gestreubt innerlich....Danke für eure Hilfe

                            Kommentar

                            Lädt...
                            X