Autor | Zpráva | ||
---|---|---|---|
Radek Tůma Profil * |
#1 · Zasláno: 10. 2. 2012, 10:28:18
Dobrý den,
mám databázi se zeměpisnými entitami - používám velký sjednocovací dotaz, kterým vracím všechny entity a v které zemi leží. Struktura jak tabulek, tak jednotlivých dotazů, které jsou částí velkého sjednocovacího dotazu, je daleko složitější a je jich také více. Záměrně jsem to pro lepší pochopení toho, co chci, udělal jednoduché. Strukturu jednotlivých tabulek i jednotlivých dotazů mám shodnou. $query = "select mesta.nazev as 'entita', zeme.nazev as 'zeme' from zeme left join mesta on (mesta.zeme_id = zeme.id)"; $query. ="union select reky.nazev as 'entita', zeme.nazev as 'zeme' from zeme left join reky on (reky.zeme_id = zeme.id)"; $query. ="union select hory.nazev as 'entita', zeme.nazev as 'zeme' from zeme left join hory on (hory.zeme_id = zeme.id)"; Protože ty dotazy jsou ve skutečnosti složité, ale stejně konstruované - a v případě změn musím editovat každý dotaz, napadlo mně, zda se by to nedalo udělat tak, že by byl v kódu jen jeden dotaz jako proměnná, a ten se k sobě tolikrát unionem připojil, kolik je entit - ale jak v té první proměnné měnit entitu? Takhle nějak si to představuji: $query = "select $entita.nazev as 'entita', zeme.nazev as 'zeme' from zeme left join $entita on ($entita.zeme_id = zeme.id)"; $entita="mesta"; $union_query = $query; $union_query. = union $query; $entita="reky"; $union_query. = union $query; |
||
Keeehi Profil |
#2 · Zasláno: 10. 2. 2012, 11:54:42
function q ($entita) { return "select $entita.nazev as 'entita', zeme.nazev as 'zeme' from zeme left join $entita on ($entita.zeme_id = zeme.id)"; } $query = q("mesta"); $query .= " union ". q("reky"); $query .= " union ". q("hory"); |
||
Časová prodleva: 3 dny
|
|||
Radek Tůma Profil * |
#3 · Zasláno: 13. 2. 2012, 15:23:16
Keeehi:
Přesně tohle jsem potřeboval. Děkuji moc! |
||
Časová prodleva: 12 let
|
0