Sortierung in MySQL
Igor der Hässliche
- datenbank
0 Ilja0 Igor der Hässliche0 Ilja
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
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
»
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.
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
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
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
Danke, kommt aber leider dieselbe Geschichte 'raus wie vorher, d.h. eine Sortierung ohne Rücksicht auf die letzten 10 Beiträge.
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