JOIN und RAND zusammen

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

  • JOIN und RAND zusammen

    Ich bastel mir grade eine Gallerie.

    Es soll in der Übersicht für jede Kategorie ein zufälliges Bild angezeigt werden - nur ich weiß nicht wie ich das in meinen Query einbauen kann.

    Ich habe 2 Tabellen. Eine für die Kategorien mit den Spalten

    id | title | date

    und eine für die eigentlichen Bilder mit den Spalten

    id | filename | cat_id

    mein bisheriger Query sieht so aus:
    Code:
    SELECT cat.*, COUNT(img.id) imgcount
    FROM img_categories cat LEFT JOIN img_images img ON (img.cat_id = cat.id)
    GROUP BY cat.id
    ORDER BY cat.date DESC
    Das Ergebnis sieht so aus:
    Code:
    +----+-------------------+---------------------+----------+
    | id | title             | date                | imgcount |
    +----+-------------------+---------------------+----------+
    |  3 | Kategorie 3       | 2004-03-06 17:30:21 |        2 |
    |  2 | Kategorie 2       | 2004-03-06 16:42:04 |        0 |
    |  1 | Kategorie 1       | 2004-03-06 16:41:44 |        0 |
    +----+-------------------+---------------------+----------+
    Ich weiß, ich muss den Query noch erweitern, damit er mir den Dateinamen von einem Bild ausgibt:
    Code:
    SELECT cat.*, COUNT(img.id) imgcount, img.filename
    FROM img_categories cat LEFT JOIN img_images img ON (img.cat_id = cat.id)
    GROUP BY cat.id
    ORDER BY cat.date DESC
    Ergebnis:
    Code:
    +----+-------------------+---------------------+----------+---------------+
    | id | title             | date                | imgcount | filename      |
    +----+-------------------+---------------------+----------+---------------+
    |  3 | Kategorie 3       | 2004-03-06 17:30:21 |        2 | testbild1.jpg |
    |  2 | Kategorie 2       | 2004-03-06 16:42:04 |        0 | NULL          |
    |  1 | Kategorie 1       | 2004-03-06 16:41:44 |        0 | NULL          |
    +----+-------------------+---------------------+----------+---------------+
    Dort, wo jetzt testbild1.jpg steht, soll ein zufälliges bild aus der Tabelle img_images sein.
    Wenn ich bei dem ORDER BY ein RAND() hinzufüge, ist die Übersicht jedoch nicht mehr nach Datum sortiert. Ich habe auch schon versucht in die Bedingung des JOINs das RAND() einzubauen, aber hat auch nicht geklappt.
    Ist das überhaupt so möglich, wie ich mir das denke?
    hopka.net!

  • #2
    Wenn Du Dir klar machen würdest, das Dein Statement lediglich auf einer MySQL Datenbank läuft ... und das auch nur wenn diese nicht im ANSI-Modus läuft ...

    ... wenn Du Dir dann klar machst was GROUP BY eigentlich macht ...

    ... dann sollte Dir klar werden das dein Statement ein ziemlicher Unsinn ist ... und das von Dir gewünschte Ergebnis ... zumindest auf diesem Wege nicht zu erreichen ist ...
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Original geschrieben von goth
      ... wenn Du Dir dann klar machst was GROUP BY eigentlich macht ...
      das ist nur da, weil COUNT() danach verlangt
      Original geschrieben von goth
      ... und das von Dir gewünschte Ergebnis ... zumindest auf diesem Wege nicht zu erreichen ist ...
      naja, ok, hab ich schon befürchtet - mach ich eben 2 Queries.
      hopka.net!

      Kommentar


      • #4
        Original geschrieben von Hopka
        das ist nur da, weil COUNT() danach verlangt
        Ich sag's ja ... Du hast es einfach nicht verstanden ... eine Clause sollte an einer bestimmten Stelle stehen weil man es möchte ... nicht weil irgendeine Funktion danach verlangt ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar

        Lädt...
        X