Zadejte hledaný výraz...

Mysql select (MySQL)

Zdravím, potřeboval bych trošku poradit. Mám tabulku
ukoly_upload ve které vedu nahrané soubory pro daný úkol. Mino jiné tam jsou nejdůležitější řádky id_ukolu a id_zaka.
V tabulce zaci vedu mimo jiné i id_tridy do které patří.
Potřeboval bych vypsal žáky, kteří ještě svůj úkol neuložili. Chtěl bych tedy něco jako
vypsat žáky, co nemají záznam v tabulce ukoly_upload (id_zaka, id_ukolu) a zároveň jsou z určité třídy zaci (id_tridy).
Prostě vypsat žáky, kteří ještě pro daný úkol neuložili svůj soubor (úkol). Doufám že jsem to popsal nějak srozumitelně a nějak se do toho nezamotal.
Nějak to pořešit přes PHPčko by nebyl problém, ale chtěl jsem to zkusit udělat nějak lépe, než to řešit přes forcyklus ve forcyklu, jestli to tedy jde nějak udělat přes slq dotaz přímo.
Předem děkuji za odpoveď
11. 3. 2011 18:17:05
https://webtrh.cz/diskuse/mysql-select-mysql#reply617978
Ahoj,
na toto je mozne pouzivat JOIN. Jestli jsem to dobre pochopil, tak v tvem pripade bude potreba vyuzit LEFT OUTER JOIN.
Prostuduj si SQL dotaz na toto tema. Neni to nic sloziteho.
Michal
11. 3. 2011 18:52:52
https://webtrh.cz/diskuse/mysql-select-mysql#reply617977
Zhruba takhle:
SELECT ...
FROM zaci z
LEFT JOIN ukoly_upload u ON z.id_zaka = u.id_zaka
WHERE id_tridy = X AND ISNULL(u.id_ukolu)
Tohle vypíše všechny žáky z třídy X, kteří neuploadovali žádný úkol. Pokud tedy např. v tabulce ukoly_upload může být více úkolů (jakože asi ano), tak by to bylo nutno ještě upravit.
Jirka Matějka
11. 3. 2011 20:47:49
https://webtrh.cz/diskuse/mysql-select-mysql#reply617976
Pro odpověď se přihlašte.
Přihlásit