2010-10-31 20 views
2

J'ai une question qui fait une sorte de groupe de rejoindre magique qui fonctionne très bien sur la version Android 2.2 (Froyo) de SQLite:Comment utiliser les sélections dans les clauses de jointure dans Android 2.1?

SELECT channels.*, p.* 
FROM channels 
LEFT JOIN programs p ON channels._id = p.channel_id 
JOIN (select p2.channel_id, max(p2.airdate) max_air FROM programs p2 
     GROUP BY p2.channel_id) pj 
ON pj.channel_id = p.channel_id AND pj.max_air = p.airdate 
ORDER BY channels.channel_index asc; 

Pour une raison quelconque, la jointure ne fonctionne pas avec Android 2.1, mais échoue avec

no such column: pj.channel_id 

Je pense que c'est parce que SQLite a été amélioré de 2.1 à 2.2, mais quel serait le SQL approprié qui fonctionne pour les deux versions?

Répondre

0

La résolution était simple, je voulais juste laisser tomber l'alias "p":

SELECT channels.*, programs.* 
FROM channels 
LEFT JOIN programs ON channels._id = programs.channel_id 
JOIN (select p2.channel_id channel_id, max(p2.airdate) max_air FROM programs p2 
     GROUP BY p2.channel_id) pj 
ON pj.channel_id = programs.channel_id AND pj.max_air = programs.airdate