
SQL dotaz
MAm tabulku kde su osobne udaje, napr. cislo , meno atd atd. Nasledne je v druhej tabulke cislo (z prvej tabulky - kluc), a typ auta a spz. Niekto ma jdno, niekto 3 nizkto ziadne . . . ako zadat dotaz, aby mi k vypisu do riadku zadal polozky z prvej tabulky (to nieje problem) ale pridat k tomu do toho isteho riadku aj polozky z tabulky aut - teda ten co ma 3 auta bude mat napr plus 2x3 stlpce - typ a spz. Kazda osoba z [rvej tabulky musi mat iba jeden riadok. Ak by som to mohol mat v tolko riadkoch kolko ma kazdy aut, to sa mi podarilo, ale do jedneho riadku . . . . da sa to vobec? a musi to by iba select, nie nejaka procedura . . .
Takto se to nedělá.
SQL dotaz vrací seznam aut pro toho člověka, tedy 3 řádky, nezvyšuje se počet sloupců - auta se nevypisují vedle sebe.
To sice je možné udělat přes pivot tabulky, ale pak už záleží na konkrétním SQL serveru, co podporuje.
MS SQL, možno sa to tak nerobí, ja som si to nevymyslel, do viac riadkov nieje problém, nejaké základy SQL zvládam , ale keď po mne chcú jeden človek = jeden riadok
A nechce sa mi to upravovať v exceli, tak ci neexistuje nejaká finta,
Ty jsi tiskový mluvčí truhlika nebo co?
Ano, ta finta se jmenuje třeba dynamicky SQL dotaz. Prostě si dotaz poskládáš do příkazu v proměnné a ten pak spustíš.
Takže nejprve si SQL dotazem zjistíš, max. počet sloupců budeš potřebovat, pak provedeš SQL dotaz, který ti to vybere pod sebe a ty to pak následným skriptem naplníš do tabulky a vrátíš.
MS SQL umí pivot tables, takže si spusť help a nastuduj syntaxi.
Máš v té tabulce SPZ nějak označeno, která je 1., 2., 3.? Co když tam budou 4 SPZ, 5,... ?
Nie, pocet nieje, to je samostatna tabulka, jedine select na pocet riadkov pre kazdeho zamestnanca
Kdyby v tabulce auto bylo pořadí = 1,2,3
šlo by napsat
select majitel.jmeno,prvni.typ,prvni.spz,druhe.typ,druhe.spz,treti.typ,treti.spz
from majitel
left join auto as prvni
on majitel.id=prvni.id and prvni.poradi=1
left join auto as druhe
on majitel.id=druhe.id and druhe.poradi=2
left join auto as treti
on majitel.id=treti.id and treti.poradi=3
a nějaký left/right join by nešel?
SELECT name, age from People right join Cars on People.ID_Car = Cars.ID_Car
ale takhle to bude fungovat jen pro jedno auto