Diskuze: Spojení 3 tabulek s novým sloupcem
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
SELECT a, b, c, 1 AS d -- normalne pouzij hodnotu a alias
FROM tblA
UNION ALL
SELECT e AS a, f AS b, g AS c, 2 AS d
FROM tblB
UNION ALL
SELECT *, 3 AS d
-- nebo bez aliasu, podle toho, zda vybiras sloupce jako cislo nebo text
FROM tblC
Nevim, jak to access dela, mozna sloupce cisluje, mozna by stacilo jen:
*, 1 -- nebo
*, '1'
Takhle, abys pochopil, o co bezi v sql prikazu
SELECT sloupce -- vyber sloupce
FROM tabulka -- z tabulky
WHERE x>10 -- kde plati, ze sloupec x je vetsi nez 10
ORDER BY x ASC -- serad podle x od nejmensiho po nejvetsi
LIMIT 4, 10 -- a z vysledne tabulky zobraz jen radky 4 az 14
Ale nevim, co vsechno z SQL syntaxe lze pouzit. A jeste do toho muzes
primichat grupovani a pod.
Sloupce v SELECT je vetsinou lepsi vypsat. * zrovna u UNION muze delat problem.
Sql obvykle vyzaduje, aby pocet sloupcu byl stejny a mam pocit, ze i stejny
alias. Cili, kdybys v unionu mel tabulky s rozdilnym poctem sloupcu, tak bys
musel doplnit aspon null.
*... UNION...
*, null... UNION...
*, 0, '', ''...
Jojo, to první, co jsi napsal, funguje.
O co běží v SQL příkazu mi je jasné, jen jsem netušil, že si takto na
drzo mohu říci o přidání nového sloupce. Já to mezi tím zkoušel obejít
třemi pomocnými tabulkami, které jsem pak skládal dohromady. Takhle přidám
něco málo do příkazu, a dělá to to samé.
Počty sloupců ve zdrojových tabulkách jsou stejné.
Díky moc za navedení ...
Jen ještě kdyby někdo řešil stejný oříšek, tak výsledný příkaz u mě vypadá takto:
SELECT *, "A" as Zdroj
FROM tblA
UNION ALL
SELECT *, "B" as Zdroj
FROM tblB
UNION ALL
SELECT *, "C" as Zdroj
FROM tblC
Tak, jestli by slo o pomocne tabulky, tak bych to resil asi takto
tab pomocna
typ, text
1, 'A'
2, 'B'
SELECT *, b.text
FROM tab1 a
LEFT JOIN tab2 b ON b.typ=1
UNION
SELECT *, b.text
FROM tab1 a
LEFT JOIN tab2 b ON b.typ=2
Ze bys v pomocne tabulce mel text, ktery tam dosadis podle typ (id).
Zobrazeno 6 zpráv z 6.