nach RAND() Ausgabe sortieren

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

  • nach RAND() Ausgabe sortieren

    Hallo Leute,

    ich gebe mit RAND() immer zufällig 7 Datensätze aus. Soweit funktionierts. Jetzt möchte ich, dass genau diese 7 zufälligen Datensätze vor der finalen Ausgabe anhand einer Spalte sortiert werden (hier: InsertTime).

    Mein SQL Statement derzeit:

    PHP-Code:

    $query_rsGame 
    "
    SELECT *
    FROM games
    JOIN genre ON games.GenreID = genre.GenreID
    JOIN screenshots ON games.GameID = screenshots.GameID
    WHERE screenshots.FileType = 'screen' AND games.InsertTime >= '"
    .$last7days."'
    GROUP BY games.GameID
    ORDER BY RAND(NOW()) 
    "

    Frage: Kann ich in SQL den RAND-Teil oder den ORDER BY-Teil so erweitern, dass dies funktioniert?

    1000 Dank, Marc

  • #2
    fehlt da nicht noch ein limit 7 ?

    Code:
    select * from (SELECT *
    FROM games
    JOIN genre ON games.GenreID = genre.GenreID
    JOIN screenshots ON games.GameID = screenshots.GameID
    WHERE screenshots.FileType = 'screen' AND games.InsertTime >= '".$last7days."'
    GROUP BY games.GameID
    ORDER BY RAND(NOW()) 
    limit 7 
    ) as G order by InsertTime
    was machen die vielen Gedanken in meinem Kopf ?

    Kommentar


    • #3
      Danke, Limit fehlt nicht, hab die Beschränkung über PHP gemacht, dachte es gebe hier und da Probleme mit LIMIT abhängig von der SQL Version.

      Kurze Frage noch zu Deinem Vorschlag - das 'G' - was ist das genau - gibst du dem Select nur einen Namen ?

      Besten Gruss, Marc

      Kommentar


      • #4
        Original geschrieben von marc26
        Danke, Limit fehlt nicht, hab die Beschränkung über PHP gemacht, dachte es gebe hier und da Probleme mit LIMIT abhängig von der SQL Version.
        solltest die beschränkung schon mit SQL machen, das beschleunigt die sache um einiges.

        Kommentar


        • #5
          Hab es ausprobiert - funktioniert nicht ganz - er sagt mir jetzt 'Duplicate Column Name GenreID' ?

          Eine Ahnung, woran das liegen mag ?

          Danke, Marc

          Kommentar


          • #6
            selektier mal nur die spalten die du brauchst (statt *)
            was machen die vielen Gedanken in meinem Kopf ?

            Kommentar


            • #7
              Okay habs jetzt,

              PHP-Code:

              SELECT 
              FROM (
              SELECT genre.GenreNamescreenshots.Filegames.Foldergames.USGameTitlegames.InsertTime
              FROM games
              JOIN genre ON games
              .GenreID genre.GenreID
              JOIN screenshots ON games
              .GameID screenshots.GameID
              WHERE screenshots
              .FileType 'screen' AND games.InsertTime >= '".$last14."'
              GROUP BY games.GameID
              LIMIT 35 
              )
              AS 
              results ORDER BY RAND(NOW())
              Limit 7 
              Problem war, ich hatte zweimal SELECT * (in der inneren wie der äusseren SELECT Anweisung). Anscheinend muss man in der inneren die Tabellenspalten einzeln angeben?

              Frage: Kann das wirklich wahr sein, auf die Dauer kann das ziemlich mühsam werden, ständig alle Tabellenspalten angeben zu müssen (per Hand) ?

              Gruss, Marc

              Kommentar


              • #8
                das ist nur weil manche spaltennamen (zb. GenreID) in mehreren deiner tabellen vorkommen
                was machen die vielen Gedanken in meinem Kopf ?

                Kommentar

                Lädt...
                X