Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jednodušší MySQL dotaz

Jednodušší dotaz, bohužel nefunguje tak, jak by měl.

Mám 2. tabulky.

Jedna obsahuje VŠECHNY emaily(address_book) a druhá jen některé emaily (jejich id v address_book). Druhá tabulka se jmenuje skupina_obsah.

Skupina_obsah má tyto sloupce:

[http://pc.poradna.net/file/view/10916-skupina-obsa h-png]

A já chci vytáhnout VŠECHNY emaily z address_book, přičemž:
ty, které mají konkrétní id_skupiny v tabulce skupina_obsah a zároveň jejich id_adresy je obsaženo v tabulce address_book.id budou mít sloupce checkbox_check nenulový.

Zkouším to takto:

SELECT entry_state, address_book_id AS address_book_id, entry_company AS entry_company, p.id_adresy, p.id_skupiny checkbox_checked
FROM address_book
LEFT JOIN skupina_obsah p ON p.id_adresy = address_book_id
WHERE entry_state NOT LIKE ' '

Toto zobrazuje v sloupci checkbox_check všechny obsažené ID, jako nenulové.

A já právě potřebuji vědět, kam definovat tu podmínku, aby se checkbox_check zobrazovalo jenom pro konkrétní hodnotu id_skupiny.

Nemělo by to být složité.... ale.....

Předmět Autor Datum
Stejný dotaz jako minule. Pokud chces z jedne tabulky vsechny zaznamy bez ohledu na to, zda existuji…
Jan Fiala 18.09.2012 15:24
Jan Fiala
tu ta musim trochu poopravit. Rozdiel medzi LEFT JOIN a LEFT OUTER JOIN prakticky neexistuje. - len…
wam_Spider007 18.09.2012 15:29
wam_Spider007
za predpokladu, ze v tabulke skupina_obsah sa dane id_adresy moze nachadzat maximalne 1krat. SELECT…
wam_Spider007 18.09.2012 15:35
wam_Spider007
Děkuji. Já jsem to vyřešil nakonec částečně na aplikační vrstvě a komplikace je právě v tom, že skup…
Flash_Gordon 18.09.2012 15:43
Flash_Gordon
no to je potom ten isty pripad co predtym: SELECT ab.entry_state, ab.address_book_id, ab.entry_comp…
wam_Spider007 18.09.2012 15:46
wam_Spider007
pripadne mozes ponechat ten select co som napisal a priamo za slovo SELECT das este DISTINCT poslední
wam_Spider007 18.09.2012 15:47
wam_Spider007

Stejný dotaz jako minule.
Pokud chces z jedne tabulky vsechny zaznamy bez ohledu na to, zda existuji v druhe tabulce, nemuzes pouzit vnitrni spojeni INNER JOIN, JOIN, LEFT JOIN ale vnejsi LEFT OUTER JOIN
a pak testovat hodnotu z vnejsi tabulky, zda je null (zaznam neexistuje)

za predpokladu, ze v tabulke skupina_obsah sa dane id_adresy moze nachadzat maximalne 1krat.

SELECT
ab.entry_state,
ab.address_book_id,
ab.entry_company,
case when so.id_adresy is null then null else 'check' end as checkbox_checked
FROM address_book ab
left join skupina_obsah so on so.id_adresy = ab.address_book_id
where entry_stat <> '';

no to je potom ten isty pripad co predtym:

SELECT
ab.entry_state,
ab.address_book_id,
ab.entry_company,
case when exists (select 1 from skupina_obsah where id_adresy = ab.address_book_id) then 'check' else null end as checkbox_checked
FROM address_book ab
where entry_stat <> '';

Zpět do poradny Odpovědět na původní otázku Nahoru