[MySQL 4.1] Sortierung nach Anzahl Datensätze

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

  • [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.

    Kommentar


    • #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.
      Zuletzt geändert von pingzaong; 21.12.2005, 10:11.
      Hochachtungsvoll
      pingzaong

      Kommentar


      • #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)

        Kommentar


        • #5
          [MySQL 4.0] Inner Join

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

          Kommentar


          • #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
            Zuletzt geändert von pingzaong; 21.12.2005, 10:53.
            Hochachtungsvoll
            pingzaong

            Kommentar


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

              EDIT:
              mal wieder knapp zu spät
              Zuletzt geändert von 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)

              Kommentar

              Lädt...
              X