SELECT f.id, f.version ,w.name AS state ,m.name AS city FROM friends f ,states w ,cities m WHERE w.id = f.state_id AND m.id = f.city_id AND f.version = ( SELECT MAX(f2.version) --version is INT (NOT NULL). Also it is a second KEY FROM friends f2 WHERE f2.id = f.id --id is INT. It is a first KEY in table ) AND f.approved IS NOT NULL --approved is DATETIME, can be NULL ORDER BY f.added DESC --added is DATETIME
Nie pasuje mi tu to, że jest podzapytanie do wybrania najwyższej wersji. A całe zapytanko ma wybierać listę friendsów z najnowszymi (najwyższymi) zatwierdzonymi (approved IS NOT NULL) wersjami.
czyli np. mając tabele:
ID | VER | APPROVED
-------------------
1 | 1 | 2009-01-25
1 | 2 | 2009-01-30
1 | 3 | NULL
2 | 1 | NULL
3 | 1 | 2009-01-01
ma wybrać :
ID | VER | APPROVED
--------------------
1 | 2 | 2009-01-30
3 | 1 | 2009-01-01