Autor | Zpráva | ||
---|---|---|---|
Fik Profil * |
#1 · Zasláno: 3. 9. 2010, 13:32:45
Ahoj, potreboval bych s necim poradit. Mam tabulku znacky (kde jsou sloupce id, nazev...atd) Pak mam druhou tabulku dejme tomu auta - kde mam (nazev, id, ..., vyroba, id_znacka)
Takto jsem ji spojil: SELECT z.id, z.nazev FROM znack z LEFT JOIN auta a ON z.id=a.id_znacka WHERE ..... GROUP BY z.id ORDER BY z.id Ted bych potreboval vybrat vsechny znacky co maji modely (auta) od roku 2010 ale zadny pred. Kdyz pouziji tento dotaz SELECT z.id, z.nazev FROM znack z LEFT JOIN auta a ON z.id=a.id_znacka WHERE ..... AND YEAR(a.vyroba)="2010" GROUP BY z.id ORDER BY z.id Tak mi to sice vybere jen znacky za rok 2010 ale jsou tam i ty ktery jiz meli vyrobu aut pred rokem 2010? Jak si mam pomoc? Moc diky |
||
ninja Profil |
#2 · Zasláno: 3. 9. 2010, 14:24:37
SELECT z.id, z.nazev FROM znack z LEFT JOIN auta a ON z.id=a.id_znacka WHERE ..... AND YEAR(a.vyroba)="2010" GROUP BY z.id HAVING MIN(YEAR(a.vyroba))>=2010 ORDER BY z.id; Ale nejsem si jist jestli dobře chápu co chcete vlastně vybrat. |
||
Kajman_ Profil * |
#3 · Zasláno: 3. 9. 2010, 19:15:03
SELECT DISTINCT z.id, z.nazev FROM znack z LEFT JOIN auta a ON z.id=a.id_znacka and a.vyroba<'2010-01-01' JOIN auta a2 ON z.id=a2.id_znacka and a2.vyroba between '2010-01-01' and '2010-12-31' WHERE a.id_znacka is null ORDER BY z.id Což by mohlo být o fous rychlejší než poddotazové řešení (které bývá čitelnější pro lidi)... SELECT z.id, z.nazev FROM znack z where z.id not in (select id_znacka from auta where vyroba<'2010-01-01') and z.id in (select id_znacka from auta where vyroba between '2010-01-01' and '2010-12-31') Nebo zkusit opravit to ninjovo řešení SELECT z.id, z.nazev FROM znack z LEFT JOIN auta a ON z.id=a.id_znacka WHERE ..... -- bez podminky na rok! GROUP BY z.id HAVING MIN(a.vyroba) between '2010-01-01' and '2010-12-31' ORDER BY z.id |
||
Časová prodleva: 14 let
|
0