Tema: Re: Padëkit su uþklausa
Autorius: Laimis
Data: 2009-11-07 17:13:42
Artūras Šlajus rašė:
> MaoDzeDunis wrote:
>> Yra trys MySQL'inës lentelës:
>> mokiniai (mok_id, mok_vardas, mok_pavarde)
>> klases (kl_id, kl_pav, kl_metai)
>> klasiu_nariai (kln_id, kln_klases_id, kln_mokinio_id)
>>
>> Kaip iðgaut mokinius, kurie nëra priskirti jokiai klasei?
>
> Lengviausias būdas yra su subselectu
>
> SELECT * FROM mokiniai WHERE (SELECT COUNT(*) FROM klasiu_nariai WHERE
> kln_mokinio_id=mok_id) = 0
>
> Bet šitas kiekvienam mokiniui daro query. Stabdo
>
> Geriau yra kai sukuri mokinį įrašyti į klasiu_nariai įrašą, kur
> kln_klases_id yra NULL ir daryti left join.

>
> SELECT mokiniai.* FROM klasiu_nariai
> LEFT JOIN mokiniai ON kln_mokinio_id = mok_id
> WHERE kln_klases_id IS NULL

Na, Artūrai, nustebinai...

SELECT M.* FROM mokiniai.m
   LEFT JOIN klasiu_nariai KN
     ON M.mok_id = KN.kln_mokinio_id
WHERE KN.kln_klases_id IS NULL

(apie COUNT(*) apskritai nutylėsiu...)