Pokročilejší SQL dotaz
Ahoj. Mám tři tabulky.
První se jmenuje adress_book
druhá se jmenuje skupina_hlavni
a třetí se jmenuje skupina_obsah
První tabulka obsahuje emaily.
druhá obsahuje seznam zákaznických skupin
a třetí definuje, které emaily patří do jaké skupiny.
A já mám uloženo několik skupin v skupina_hlavní a v skupina_obsah mám již několik ID adres.
A nyní co zjednodušeně chci:
Chci, aby pokud je ve vybrané skupině (v skupina_obsah) nalezeno ID shodné v adress_book, aby měl nenulovou hodnotu sloupec checkbox_checked.
Zjednoduším to zadáním: Pokud edituji konkrétní zákaznickou skupinu, můžu si vybírat z tabulky adress_book všechny příjemce a přiřazovat je do této skupiny.
A v uživatelském rozhraní se zobrazuje u seznamu VŠECH adres checkbox, který je zaškrknutý v případě, že je email ve skupině. Opravdu jednoduché, ale jak na to?
Dopracoval jsem se k následujícímu dotazu:
SELECT entry_state, address_book_id as address_book_id, entry_company as entry_company, p.id_adresy checkbox_checked
FROM address_book LEFT JOIN skupina_obsah p ON p.id_adresy = address_book_id WHERE entry_state NOT LIKE ' ' and p.id_skupiny = 6 group by entry_state ORDER BY entry_company");
Tento dotaz má však tu zásadní chybu, a to ,že vybírá jen obsažené (checked) adresy.
Jak ho mám přepsat, aby vypisoval všechny adresy z adress_book a ty, které jsou zároveň obsaženy v skupina_obsah.id_adresy , aby měly sloupec checkbox_checked nenulový?