Autor Zpráva
svadla
Profil
Preji dobry den,

mam problem s sql dotazem, prosim pomozte...
tabulka1(id, cisloX) a tabulka2(id, tabulka1_id, cisloY), kde tabulka2 obsahuje 0 az N zaznamu pro kazdy zaznam z tabulka1

no a potrebuju vybrat vsechny zaznamy z tabulka1 serazene vzestupne podle nejmensiho cislaY z tabulky2, pokud ale neexistuje zaznam v tabulce2 brat cisloX

a to cele pomoci jednoho sql dotazu, ten se pak bude cpat do hotove aplikace, diky vsem za radu!
Alphard
Profil
select tabulka1.* from tabulka1 join tabulka2 on tabulka1.id = tabulka2.tabulka1_id order by tabulka2.cisloY

pokud ale neexistuje zaznam v tabulce2 brat cisloX
tohle moc nechápu :-) a stejně bych asi moc neporadil, snad někdo jiný :-)
svadla
Profil
Alphard
dik, ale tohle je mi jasny, ale taky to mas spatne - chci min cisloY pro jedinecny tabulka1_id

ale o co mi jde:
pokud pro zaznam v tabulce1 nebude zadny v tabulce2 (jakekoliv id tabulky1 nebude obsahovat sloupec tabulka1_id tabulky2) tak se ten zaznam vubec nebude pocitat a jakoby tam nebyl... Ale v tomto pripade chci aby cisloX zastoupilo minimum z cisloY
Alphard
Profil
chci min cisloY pro jedinecny tabulka1_id
nevím, jestli to správně chápu
co třeba seskupit s agregační funkcí min?
select min(cisloY) from tabulka group by tabulka_id

pokud pro zaznam v tabulce1 nebude zadny v tabulce2 (...) tak se ten zaznam vubec nebude pocitat a jakoby tam nebyl... Ale v tomto pripade chci aby cisloX zastoupilo minimum z cisloY
jak již jsem psal, jak udělat zástup čísla X za číslo Y nevím
ale do sady záznamů ho dostaneš pomocí left join

někdo snad poradí, kdyžtak google
svadla
Profil
Alphard

myslim ze na tohle mi google odpoved neda...

ten dotaz ma fungovat nejak takto:
pro kazdy zaznam v tabulce1
1. cislo = min z tabulky2 = kde tabulka2.tabulka1_id = tabulka1.id
2. if !isset(cislo) cislo = cisloX z tabulky1
3. order by cislo ASC nebo DESC (budu potrebovat obe moznosti)

if v mysql neni (nebo o nem aspon nevim), ale treba ten princip pujde nejak udelat pomoci jednoho dotazu
svadla
Profil
tak mam takove tuseni ze to jednim dotazem nepujde :(
Kajman_
Profil *
select ifnull(t2.cisloY,t1.cisloX) from tabulka1 t1 left join tabulka2 t2 on t1.id=t2.tabulka1_id order by 1

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0