ugrás a tartalomhoz

UNION és ORDER BY probléma

stan · 2010. Okt. 21. (Cs), 19.04
Sziasztok!

Van két adatbázis, az egyikben a megyék vannak, a másikban a települések. Azt szeretném, hogy a lekérés az alábbi sorrendben hozná ki az eredményeket:

- a lista a megyékkel kezdődik, amelyeket abc sorrendben egymás után felsorol
- ezután következik az összes település egymás után szintén abc sorrendben

Tehát például így:
1. Baranya megye
2. Heves megye
3. Nógrád megye
4. Adony
5. Balatonfüred
6. Kisköre
7. Vasvár
8. Veszprém
9. Zalaszentgrót

Ezzel próbálkoztam:
(SELECT id,name FROM megye ORDER BY name) UNION ALL (SELECT id,name FROM telepules ORDER BY name)

A fent leírt kívánalmak helyett ezt dobja ki:
1. Nógrád megye
2. Baranya megye
3. Heves megye
4. Veszprém
5. Balatonfüred
6. Zalaszentgrót
7. Kisköre
8. Adony
9. Vasvár

Körülnézem google-ben és mysql kézikönyvben, de nem találtam a megoldást.
Hogyan kellene megoldani egyetlen lekéréssel?
 
1

LEFT JOIN

Poetro · 2010. Okt. 21. (Cs), 20.53
SELECT m.name AS mname, m.id AS mid, t.name AS tname, t.id AS tid FROM telepules AS t 
LEFT JOIN megye AS m ON m.id = t.id 
ORDER BY m.name, t.name
2

picit mashogy

SamY · 2010. Okt. 22. (P), 14.30
Szvsz felesleges a join.

Elvileg annak az union-nak amivel probalkoztal jonak kene lennie. Most nincs DB-m amivel probalgassam, de esetleg ha kicsit jobban eroltetjuk es kulso rendezest hasznalunk:

(SELECT id, name, 0 AS prior FROM megye) 
UNION ALL 
(SELECT id, name, 1 AS prior FROM telepules)
ORDER BY prior, name