15 höchsten Werte ausgeben

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

  • 15 höchsten Werte ausgeben

    hiho,

    ich möchte die 15 höchsten Werte einer Tabellenspalte ausgeben und dabei die ORDER BY / LIMIT Variante umgehen.

    Gibt es eine Möglichkeit das innerhalb eines SELECT statements zu realisieren - vielleicht mit GREATEST / MAX ?

    100 Dank, Marc

  • #2
    Anscheinend geht das so nicht, wie ich mir das vorstelle...

    Ich könnte ja auch mit einer Subquery arbeiten.

    Das soll passieren:

    1. nimm die 35 Datensätze mit den höchsten Views
    2. wähle daraus 7 zufällig aus
    3 sortiere diese 7 DESC nach Views

    Schrit 1 & 2 hab ich schon:

    PHP-Code:
    // Schritt 2
    SELECT FROM (

    // Schritt 1
    SELECT genre.GenreNamescreenshots.Filegames.Foldergames.USGameTitle,  views.Viewsgames.GameID
    FROM games
    JOIN views ON games
    .GameID views.GameID
    JOIN genre ON games
    .GenreID genre.GenreID
    JOIN screenshots ON games
    .GameID screenshots.GameID
    WHERE screenshots
    .FileType 'screen' AND views.Views <> ''
    GROUP BY games.GameID
    ORDER BY views
    .Views DESC
    Limit 35

    )
    AS 
    results ORDER BY RAND(NOW())
    Limit 7 
    Jetzt weiss ich aber nicht, wie ich den dritten SELECT da rumgestülpt bekomme.

    In etwa so denke ich:

    PHP-Code:
    // Schritt 3
    SELECT FROM (

       (...)

    ) AS 
    results ORDER BY views.Views 
    Will er aber nicht, weil ihm die zweimal Select * nicht gefallen...

    Vielleicht hat da ja einer eine Idee, wie das dritte (oder das zweite) Select Statement aussehen muss ?

    Gruss, Marc

    Kommentar


    • #3
      Und es funktioniert:

      1. nimm die 35 Datensätze mit den höchsten Views
      2. wähle daraus 7 zufällig aus
      3 sortiere diese 7 DESC nach Views
      PHP-Code:
      SELECT FROM

          
      (SELECT FROM

              
      (SELECT genre.GenreNamescreenshots.Filegames.Foldergames.USGameTitleviews.Views AS vgames.GameID
              FROM games
              JOIN views ON games
      .GameID views.GameID
              JOIN genre ON games
      .GenreID genre.GenreID
              JOIN screenshots ON games
      .GameID screenshots.GameID
              WHERE screenshots
      .FileType 'screen' AND views.Views <> ''
              
      GROUP BY games.GameID
              ORDER BY views
      .Views DESC
              Limit 35
              
              
      ) AS a ORDER BY RAND(NOW())
              
      Limit 7

          
      ) AS b ORDER BY v DESC 

      Kommentar


      • #4
        OffTopic:
        das ist ja mal ein klasse thread

        - fragesteller stellt frage
        - fragesteller liefert lösungsansatz
        - fragesteller gibt antwort

        wenn die hier alle nur so wären


        btw: hast mir selber bei einem dicken problem geholfen!

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar

        Lädt...
        X