Autor Zpráva
Fik
Profil *
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
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 *
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

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