Problem beim erstellen eines querys

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

  • Problem beim erstellen eines querys

    Hallo!

    Ich brauch ein Query das daten abhändig voneinander aus 3 verschiedenen tabellen holt.
    Ich will wissen, wieviele Alben es in der Kathegorie Geburtstage gibt und wieviele Bilder es in der Kathegorie Geburtstage gibt.

    Tabellenaufbau:
    gallery_cathegory:
    id | cathegory
    1 | Geburtstage

    gallery_albums:
    id | album | date | cat_id
    1 | Album1 | 1153612746 | 1
    2 | Album2 | 1153612750 | 2

    gallery_photos:
    id | photo | thumbnail | description | date | album_id
    1 | photo-1.jpg | photo-2.jpg | Beim Feiern | 1153612819 | 1
    2 | photo-3.jpg | photo-4.jpg | Beim saufen 1153613488 | 2

    Irgendwie bekomm ich das nicht auf die reihe. Kann mir jemand helfen?

  • #2
    Code:
    SELECT COUNT(*) FROM gallery_albums AS b,gallery_cathegory AS c 
    WHERE b.cat_id=c.id AND c.cathegory='Geburtstage'
    
    SELECT COUNT(*) FROM gallery_photos AS a, gallery_albums AS b,gallery_cathegory AS c 
    WHERE a.album_id=b.id AND b.cat_id=c.id AND c.cathegory='Geburtstage'
    Code:
    SELECT COUNT(*) FROM gallery_albums AS b,gallery_cathegory AS c 
    WHERE b.cat_id=c.id 
    GROUP BY c.cathegory
    
    SELECT COUNT(*) FROM gallery_photos AS a, gallery_albums AS b,gallery_cathegory AS c 
    WHERE a.album_id=b.id AND b.cat_id=c.id 
    GROUP BY c.cathegory
    die a,b,c sind nur um die Schreibweise lesbarer zu machen.
    im aktuellen Code würde ich die original Namen brauchen.

    Es würde auch mit expliziten JOIN ... ON ... Befehlsteilen gehen, aber ich glaube
    obiges ist das üblichere.

    Ich habe gedacht du wolltest beide queries in einem, nachdem dir das nicht passt merke ich dass du alle Kategorien in einem query möchtest. Hättest Du so schreiben können.

    edit: ergänzt gemäss untenstehendem
    Zuletzt geändert von h31ss; 23.07.2006, 11:13.

    Kommentar


    • #3
      Hallo!

      Ich brauch das ganze in einem query.
      Es wird ja mehrere Kathegorien geben. Ich will ja alles per while schleife dann ausgeben

      Kommentar


      • #4
        Das würde gehen, ist aber nicht gerade vernünftig (weil Du es selber nicht kannst. )Nur zum Beispiel da Du es nicht debuggen kannst wenn der Ansatz noch nicht ganz klappt.

        Das Argument mit der Schleife haut auch nicht hin.

        Kommentar


        • #5
          Wie soll ich dann die ganzen Kathegorien ausgeben wenn das nicht alles in einem query steht?

          So sollte es ca. aussehen:

          ------------------------------------
          Kathegorie | Alben | Fotos
          ------------------------------------
          Geburtstage | 3 | 15
          Urlaube | 4 | 230

          Kommentar


          • #6
            Ich habe mal was gemacht.
            Ich glaube aber dass man nicht beide COUNT(*) in einem query bekommt, weil die Anzahl Datensätze verschieden ist, die gezählt werden sollte.

            Am einfachsten und logischsten ist es, ein SELECT über cathegory zu machen, und dann in einer Schleife meine originalen (oben geänderten) queries einzubringen. Bis Du das mit LEFT JOIN und SUM(1) Elementen hingekriegt hast, ist das im vorangehenden Satz beschriebene längstens codiert und getestet. Ich würde den Ansatz des ersten Satzes machen und während dem Programmieren auf das im zweiten Satz genannte wechseln.
            Zuletzt geändert von h31ss; 23.07.2006, 11:17.

            Kommentar


            • #7
              Eine andere elementare Möglichkeit ist folgende mit 3 queries:

              SELECT alle Kategorien und einen array aufbauen
              SELECT... GROUP BY (1. Abfrage von weiter oben) und auch in den array eintragen
              SELECT... GROUP BY (2. Abfrage von weiter oben) und ebenfalls in den array eintragen

              Dann den array ausgeben. Es hat den Vorteil auch Kategorien mit noch keinen Albums zu bekommen.

              Kommentar


              • #8
                ich versteh jetzt nicht wirklich was du meinst!?

                Kommentar


                • #9
                  egal...

                  Kommentar

                  Lädt...
                  X