[MySQL 4.1] Sortierung nach Anzahl Datensätze

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [MySQL 4.1] Sortierung nach Anzahl Datensätze

    Ich habe eine Galerie erstellt, die zwei SQL-Tabellen benötigt. Die eine listet mir alle Galerien auf. Die andere, welche mit einer Fremd-ID verbunden ist, zeigt alle hochgeladenen Bilder der entsprechenden Galerie.

    In meinem Menu sind folgende Punkte zu sehen:

    Galerie | Fotograf | Anzahl Bilder | Datum

    Wie kann ich in der Menu-Tabelle nach Anzahl Bilder sortieren, wenn die Daten nicht in der Tabelle der Galerie stehen?

    Vielen Dank

    Hochachtungsvoll
    pingzaong

  • #2
    Mit COUNT, ORDER BY und evtl. JOIN.

    SELECT ..., COUNT(bilder.id) AS c FROM galerien, bilder
    WHERE ... AND bilder.gid = galerien.id
    ORDER BY c

    Genaueres läßt sich nur sagen, wenn man deine Tabellenstrukturen kennt.

    Comment


    • #3
      Lösung dazu

      Ich habe zu meinem eigenen Problem die Lösung gefunden:

      PHP Code:
      $result mysql_query("SELECT gallery.id, gallery.verzname, gallery.verzeichnis, gallery.autor, gallery.datum
      FROM gallery INNER JOIN pics ON gallery.id = pics.gallery_id 
      GROUP BY gallery.id, gallery.verzname, gallery.verzeichnis, gallery.autor, gallery.datum 
      ORDER BY Count(pics.gallery_id) ASC"
      ); 



      Allerdings werden die Galerien, welche keine Bilder enthalten nicht angezeigt. Die Zahl 0 wird nicht akzeptiert.
      Last edited by pingzaong; 21-12-2005, 10:11.
      Hochachtungsvoll
      pingzaong

      Comment


      • #4
        Allerdings werden die Galerien, welche keine Bilder enthalten nicht angezeigt. Die Zahl 0 wird nicht akzeptiert
        ist ja auch logisch bei einem INNER JOIN.
        Da werden nur Galerien gefunden, wo´s auch Bilder zu gibt.
        Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

        Comment


        • #5
          [MySQL 4.0] Inner Join

          Ja kennst du denn auch eine Lösung, wo die Zahl 0 auch akzeptiert wird??
          Hochachtungsvoll
          pingzaong

          Comment


          • #6
            [MySQL 4.0] Inner Join zu Left Join

            Habe die Lösung wieder einmal selbst gefunden:

            PHP Code:
            $result mysql_query("SELECT gallery.id, gallery.verzname, gallery.verzeichnis, gallery.autor, gallery.datum 
            FROM gallery LEFT JOIN pics ON gallery.id = pics.gallery_id 
            GROUP BY gallery.id, gallery.verzname, gallery.verzeichnis, gallery.autor, gallery.datum 
            ORDER BY Count(pics.gallery_id) ASC"
            ); 
            Gruss
            Last edited by pingzaong; 21-12-2005, 10:53.
            Hochachtungsvoll
            pingzaong

            Comment


            • #7
              Wie wärs mit LEFT JOIN statt INNER JOIN

              EDIT:
              mal wieder knapp zu spät
              Last edited by thommyk; 22-12-2005, 10:46.
              Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

              Comment

              Working...
              X