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
  1. SELECT m.name AS mname, m.id AS mid, t.name AS tname, t.id AS tid FROM telepules AS t   
  2. LEFT JOIN megye AS m ON m.id = t.id   
  3. 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:
  1. (SELECT id, name, 0 AS prior FROM megye)   
  2. UNION ALL   
  3. (SELECT id, name, 1 AS prior FROM telepules)  
  4. ORDER BY priorname