Alternative zur Verwendung von GROUP BY ohne Aggregate abrufen unterschiedliche "beste" Ergebnis

Ich versuche zum abrufen der "Best" möglichen Eintrag aus einer SQL-Tabelle.

Betrachten Sie eine Tabelle mit tv-shows:
id, Titel, episode, is_hidef, is_verified
eg:

id title         ep hidef verified
1  The Simpsons  1  True  False
2  The Simpsons  1  True  True
3  The Simpsons  1  True  True
4  The Simpsons  2  False False
5  The Simpsons  2  True  False

Kann es doppelte Zeilen für einen einzigen Titel und episode, die möglicherweise oder möglicherweise nicht unterschiedliche Werte für den boolean-Felder. Es können weitere Spalten mit zusätzlichen Informationen, aber das ist unwichtig.

Ich möchte ein ResultSet, das gibt mir die beste Zeile (also is_hidef und is_verified sind beide "wahr" soweit möglich) für jede episode. Für Zeilen, die als "gleich" ich will die letzten Zeilen (Natur-Bestellung oder Bestellung durch eine frei wählbare datetime-Spalte).

3  The Simpsons  1  True  True
5  The Simpsons  2  True  False

Ich In der Vergangenheit benutzt haben, Sie die folgende Abfrage:

SELECT * FROM shows WHERE title='The Simpsons' GROUP BY episode ORDER BY is_hidef, is_verified

Diese arbeiten unter MySQL und SQLite, aber geht gegen die SQL-spec (GRUPPE DURCH die Forderung aggragates etc etc). Ich bin nicht wirklich daran interessiert zu hören, wieder, warum MySQL so schlecht, dafür, dass dieses; aber ich bin sehr daran interessiert, eine alternative Lösung, die die Arbeit auf anderen Motoren auch (Bonuspunkte, wenn du mir das django ORM-code).

Dank =)

"bonus-Punkte, wenn Sie mir die django ORM-code für" Welche Art von bonus reden wir?
Meinen immerwährenden Dank? Ernst tho: es gibt keine echte Belohnung :p
Ich glaube nicht, dass es Weise - ohne die Verwendung eines JOIN - zu sagen, die DB-Engines, die es ermöglichen, diese Art von Gruppierung, welche zufällige Zeile, die Sie wollen.
Ich bin nicht dagegen, eine Lösung mit einer Verknüpfung. Ich bin der Hoffnung, für eine Lösung, die keine GROUP BY-obwohl (oder wenn es funktioniert, dann für die Einhaltung der SQL-spec).
ist das für SQL(T-Sql) oder MySql?

InformationsquelleAutor Tyris | 2011-01-17

Schreibe einen Kommentar