Jak vybrat z tabulky řádky ke kterým neexistuje záznam v závislé tabulce
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- adioverride
- Člen | 26
Ahoj,
prosím vás nějak si lámu hlavu nad dotazem:
Mám dvě tabulky
1)
Order
Name
Price
end_date
2)
Bill
Id
order_id
Name
Rád bych vytáhl z tabulky Selection, který bude odpovídat následujícím podmínkám end_date bude starší než „dnešek“ a nebude existovat záznam v tabulce bill. Prosím jak toho lze docílit? Pomůže někdo ? :)
Díky,
Adam
- nanuqcz
- Člen | 822
Ahoj,
vezmu to postupně:
1) end_date bude starší než „dnešek“
$db->table('order')->where('end_date < NOW()');
2) nebude existovat záznam v tabulce bill
K tomuhle slouží v MySQL příkaz HAVING, který se používá spolu s GROUP BY
.
Tedy v NDBT:
$db->table('order')->group('order.id')->having('COUNT(:bill.id) = 0');
Takže celý dotaz:
$db->table('order')
->where('end_date < NOW()')
->group('order.id')
->having('COUNT(:bill.id) = 0');
…netestováno, ale v principu by mělo být OK.
Editoval nanuqcz (3. 8. 2014 21:34)