UndSo: Limit nur auf einen Datensatz anweden

Hallo liebes Forum,

habe jetzt zwei Tabellen.

Eine ist für die Kategorie der Fotogalerie zuständig. Dort ist auch die Beschreibung der Kategorie, wieviele Kommentare usw:
präfix_galerie

In der zweiten sind die ganzen Bilder eingefügt für jede zugewiesene Kategorie:
präfix_galeriebilder

Nun möchte ich auf der ersten Seite alle Kategorieren auflisten und ein zufälliges Bild zu jeder Kategorie. Wenn ich nun Limit1 mache holt er nur eine Kategorie. Er sollte alle Kategorien holen und nur ein zufälliges Bild und nicht alle Bilder von präfix_galeriebilder due für die Kategorie zugeordnet sind:

Wie muss ich das nun anstellen? Geht das überhaupt?
MySQL 4

select A.kategorie, A.name, A.beschreibung, A.themen, A.antworten, B.thumbname from präfix_galerie AS A INNER JOIN präfix_galeriebilder AS B on A.kategorie=B.kategorie where ???;

Viele Grüße

  1. Servus,

    Kann deine MySQL 4 Version Unterabfragen / Subqueries?

    Wenn ja, dann kannst du eine korrelierende Unterabfrage benutzen und in jener ein ORDER BY RAND() einsetzen.

    Wenn nicht, dann könntest du es weiterhin mit einem JOIN der beiden Tabellen und einem GROUP BY versuchen. GROUP BY natürlich dann auf alle Felder der Tabelle [präfix_galerie]. Wobei "präfix" eine ungünstige Namensgebung ist, aufgrund des ä.

    Cheers,
    Frank

    1. Hi,
      vielen Dank für den Tipp.
      Werde mal schauen, ob die Version Unterabfragen kann oder nicht. Werde mich dann in Unterabfragen einarbeiten, da ich das zum ersten mal höre, dürfte aber kein Problem sein.

      Den präfix habe ich jetzt einfach nur so in dem Raum geworfen, heißt bei mir eh anders.

      Grüße

      1. yo,

        unterabfragen gehen ab version 4.1

        Ilja

        1. jep, danke.
          hab auch 4.1.1

          Werde erst mal mit der query von oben das script weiterschreiben und dann anschließend mir unterabfragen anschauen.

          grüße

  2. yo,

    Nun möchte ich auf der ersten Seite alle Kategorieren auflisten und ein zufälliges Bild zu jeder Kategorie.

    select A.kategorie, A.name, A.beschreibung, A.themen, A.antworten, MAX(B.thumbname)
    from präfix_galerie AS A
    INNER JOIN präfix_galeriebilder AS B on A.kategorie=B.kategorie
    GROUP BY A.kategorie, A.name, A.beschreibung, A.themen, A.antworten
    ;

    dies gibt dir jeweils ein bild pro kategorie, allerdings nicht random. es gibt noch eine funktion unter mysql, die random erzeugt, allerdings fällt mir der name und deren syntax im moment nicht ein, einfach mal in der doku nachschauen. eventuell musst du dann auf korrelierte unterbafragen umstellen.

    Ilja

    1. Oh super,
      bisher hat mich ilja hier im selfforum nie sitzen lassen, wenn es um datenbanken geht ;) vielen vielen dank ^^

      Die Query von oben funktioniert sehr gut. Auf random könnte ich vorläufig eh mal verzichten ;)

      Grüße

      1. yo,

        bisher hat mich ilja hier im selfforum nie sitzen lassen, wenn es um datenbanken geht ;) vielen vielen dank ^^

        man könnte glatt vermuten, ich selbst hätte den beitrag geschrieben....

        Ilja

        1. *gg*

          jep genau ;)

          undso