Igor der Hässliche: Sortierung in MySQL

Hi,

habe eine Frage:

Ich habe dieses hier ...

  
$sql = "SELECT * FROM news WHERE kategorie='o' ORDER BY hits DESC LIMIT 0,1";  

und würde gerne eine weitere Sortierung vornehmen und zwar die, dass die Auswahl nur aus den letzten 10 Datenbankeinträgen erfolgt und nicht aus der gesamten Datenbank. Ist das möglich und wenn ja, wie? Ich stehe gerade fett aufm Schlauch! :-)

Thx, Igor

  1. yo,

    du brauchst kein php code posten, wenn es dir nur um ien sql problem geht.

    und würde gerne eine weitere Sortierung vornehmen und zwar die, dass die Auswahl nur aus den letzten 10 Datenbankeinträgen erfolgt und nicht aus der gesamten Datenbank.

    mit dieser aussage kann ich rein gar nichts anfangen. deine obige abfrage selektiert genau einen datensatz aus der tabelle news. was hat das mit der gesamtendatenbank zu tun oder meinst du damit die tabelle news ? und hast du auch eine datumsspalten oder ein anderes attribut, das die "10 letzten einträge" indentifizieren kann ?

    Ilja

    1. »

      mit dieser aussage kann ich rein gar nichts anfangen. deine obige abfrage selektiert genau einen datensatz aus der tabelle news. was hat das mit der gesamtendatenbank zu tun oder meinst du damit die tabelle news ? und hast du auch eine datumsspalten oder ein anderes attribut, das die "10 letzten einträge" indentifizieren kann ?

      Hi,

      sorry, ich meinte die Tabelle, nicht die Datenbank! Also die Tabelle news. Es gibt noch weitere Attribute, u.a. date.

      1. yo,

        Es gibt noch weitere Attribute, u.a. date.

        ist immer schön, wenn man uns die benötigten informationen mitteilt, dann verbrauchen wir nicht immer so oft die magische seher-kugel. und wenn du jetzt noch mit deiner mysql version rüber kommst, könnte man dir glatt helfen.

        Ilja

        1. ist immer schön, wenn man uns die benötigten informationen mitteilt,

          ...ist ja keine böse absicht

          und wenn du jetzt noch mit deiner mysql version rüber kommst, könnte man dir glatt helfen.

          MySQL - 5.0.70-log, Protokoll-Version: 10

          1. yo,

            MySQL - 5.0.70-log, Protokoll-Version: 10

            SELECT n.*
            FROM news n
            WHERE kategorie='o'
            AND n.date >= (SELECT MIN(n2.date)
                           FROM news n2
                           ORDER BY n2.date DESC
                           LIMIT 0,10
                          )
            ORDER BY hits DESC
            LIMIT 0,1"
            ;

            bei mysql bin ich mir nicht immer so sicher, ob die unterabfrage so verwendet werden kann, aber schau mal. date ist übrigens nicht so ein guter name für eine spalte, oftmals ein reserviertes wort im sql kontext.

            Ilja

            1. Danke, kommt aber leider dieselbe Geschichte 'raus wie vorher, d.h. eine Sortierung ohne Rücksicht auf die letzten 10 Beiträge.

              1. yo,

                Danke, kommt aber leider dieselbe Geschichte 'raus wie vorher, d.h. eine Sortierung ohne Rücksicht auf die letzten 10 Beiträge.

                steckt auch ein logischer denkfehler von mir drinne, das MIN wird vor dem LIMIT ausgeführt. lass mal das MIN um die spalte herum weg und mach aus dem >= vor der unterabfrage einen IN operator.

                SELECT n.*
                FROM news n
                WHERE kategorie='o'
                AND n.date IN (SELECT n2.date
                               FROM news n2
                               ORDER BY n2.date DESC
                               LIMIT 0,10
                              )
                ORDER BY hits DESC
                LIMIT 0,1"
                ;

                Ilja