Alternative à l'utilisation de GROUP BY sans agrégats pour récupérer distinctes “meilleur” résultat

Je suis en train de récupérer le "Meilleur" entrée possible à partir d'une table SQL.

Considérer un tableau contenant des émissions de télévision:
l'id, le titre, l'épisode, is_hidef, is_verified
par exemple:

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

Il peut y avoir des doublons de lignes pour un seul titre et l'épisode qui peut ou peut ne pas avoir des valeurs différentes pour les champs booléens. Il peut y avoir plus de colonnes contenant des informations supplémentaires, mais c'est sans importance.

Je veux un résultat qui me donne le meilleur de ligne (donc is_hidef et is_verified sont à la fois "vrai" si possible) pour chaque épisode. Pour les lignes considérés comme des "égaux" je veux que la ligne la plus récente (ordre naturel, ou par un abitrary colonne datetime).

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

Dans le passé, j'aurais utilisé la requête suivante:

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

Cela fonctionne sous MySQL et SQLite, mais va à l'encontre de la SQL spec (GROUPE EN exigeant aggragates etc etc). Je ne suis pas vraiment intéressé à entendre à nouveau pourquoi MySQL est si mauvais pour permettre à celui-ci; mais je suis très intéressé à trouver une solution alternative qui permettra de travailler sur d'autres moteurs de trop (les points de bonus si vous pouvez me donner l'ORM de django code).

Merci =)

"les points de bonus si vous pouvez me donner l'ORM de django code" Quel genre de bonus allons-nous parler?
Mon impérissable grâce? Sérieusement tho: il n'y a pas de véritable récompense :p
Je ne pense pas qu'il y est de manière - sans l'aide d'un JOIN - dire les Moteurs de base de données qui permettent à ce genre de regroupement, de ce que l'aléatoire de lignes que vous voulez.
Je n'ai pas l'esprit d'une solution qui utilise une jointure. Je suis l'espoir d'une solution qui n'utilise pas de GROUPE si (ou si c'est le cas, pour se conformer avec le SQL spec).
est-ce pour SQL(T-Sql) ou MySql?

OriginalL'auteur Tyris | 2011-01-17