Oznámení
DibiDataSource → LEFT JOIN
před 10 lety
- RadeCzech
- Člen | 3
Ahoj,
hraju si tady už docela dlouho s dotazem do databáze a nemůžu na něj přijít …
Jedná se o dotaz s LEFT JOINem pomocí DibiDataSource.
Zkoušel jsem napsal celý dotaz jako dataSource(‚SELECT * FROM tabulka1 LEFT
JOIN tabulka2 ON tabulka1.id = tabulka2.id‘) a tohle mi házelo error
v laděnce „Dupliucated column name ‚id‘“ … pak jsem se podíval na
dotaz co se posílá a bylo tam toto:
SELECT *
FROM(
SELECT *
FROM
..
..
)t
Moje dotazy ?
- Proč se mi tam píše ten SELECT dvakrát?
- Proč se tam píše to t kvůli kterému celý dotaz nefunguje a jak tomu zamezit aby se tam nedopisovalo ?
- Jak to popřípadě udělat v DataSource aby to fachalo :-)
Děkuji moc za odpovědi
Editoval RadeCzech (8. 5. 2009 15:32)
před 10 lety
- vrtak-cz
- Člen | 2249
Ty to asi používáš v nette co? A taky to používáš pro paginator že? Takže se ti generují 2 dotazy jeden na celkový počet řádků a druhý pro samotné řádky. Tzn ten co ti dělá SELECT * FROM( SELECT * FROM .. .. ) zistuje kolik je celkem radku na dotaz (bez limitu).
před 10 lety
- RadeCzech
- Člen | 3
vrtak-cz napsal(a):
Ty to asi používáš v nette co? A taky to používáš pro paginator že? Takže se ti generují 2 dotazy jeden na celkový počet řádků a druhý pro samotné řádky. Tzn ten co ti dělá SELECT * FROM( SELECT * FROM .. .. ) zistuje kolik je celkem radku na dotaz (bez limitu).
Jako v Nette to používám to ano (resp. snažím se – učím se :) ) Ale nepoužívám to na paginator. Používám to na něco jiného. Prostě dejme tomu že mám tabulku knihy a tabulku autoři a při výpisu všech knih chci vypsat autory u každého.
před 10 lety
- vlki
- Člen | 218
Hm, vždycky jsem si myslel, že u JOINů se sloupce se stejnými jmény prostě jen zjednoduší tak, že se zobrazuje jen ten z poslední tabulky…
Každopádně něco jako
SELECT tabulka1.*, tabulka2.[co_je_potreba] FROM tabulka1 LEFT JOIN tabulka2 ON tabulka1.id = tabulka2.id
nefunguje?
před 10 lety
- RadeCzech
- Člen | 3
vlki napsal(a):
Hm, vždycky jsem si myslel, že u JOINů se sloupce se stejnými jmény prostě jen zjednoduší tak, že se zobrazuje jen ten z poslední tabulky…
Každopádně něco jako
SELECT tabulka1.*, tabulka2.[co_je_potreba] FROM tabulka1 LEFT JOIN tabulka2 ON tabulka1.id = tabulka2.id
nefunguje?
No ono to tak je, jako SQL dotaz mi to fungovalo v phpmydminu, ale Dibi si tam asi něco doplňuje tak se to muselo takhle „očůrat“ :-)
Z toho plyne že to co jsi napsal funguje. Nevděl jsem že se to dá takhle zapsat. Super nápad, díky moc