MySQL dotaz prosim wam_Spidera
Ahoj.
Kdysi jste mi pomohli udělat následující dotaz:
SELECT *
FROM (
SELECT p.products_image, d.products_name, p.products_model, d.products_id, d.products_description, p.abra_sc_id,
CASE nz.nl_id
WHEN 31
THEN 'checked'
ELSE 'Null'
END AS checkbox_checked,
CASE nz.v_akci
WHEN 1
THEN 'checked'
ELSE 'Null'
END AS v_akci
FROM products p
INNER JOIN products_description d ON d.products_id = p.products_id
LEFT JOIN newsletters_zbozi nz ON nz.id_zbozi = p.products_id
AND nz.nl_id =31
) AS zbozi
WHERE checkbox_checked = 'checked'
Výsledek dotazu vypadá takto:
A já nyní potřebuju jednu věc, která se lehko řekne a já taky doufám, lehko udělá.
Chci, aby do výsledku přibyly výsledky z tabulky newsletters_zbozi_hlavni.
Struktura tabulky newsletters_zbozi_hlavni je uplne totozna, jako newsletters_zbozi. Stejné názvy sloupců, stejná struktura.
CHci prostě zobrazit z obou těchto tabulek. Nyní dotaz zobrazuje jen z původní tabulky newsletters_zbozi.
Zmena predmetu, pôvodne: MySQL dotaz prosim Warm-spidera (los)
je to len nacrt ... ta podmienka v joine moze byt ine v zavislosti na tom, ako su tabulky realne prepojene.
Diky, hned zitra rano to otestuju!
A omlouvam se ze skacu z dotazu na dotaz, ale nez poresim jednu vec, tak se objevuji nove s vyssi prioritou.
Takže prosím takto.
Mám ten dotaz předělaný takhle:
SELECT *
FROM (
SELECT p.products_image, d.products_name, p.products_model, d.products_id, d.products_description, p.abra_sc_id,
CASE nz.nl_id
WHEN 31
THEN 'checked'
ELSE 'Null'
END AS checkbox_checked,
CASE nz.v_akci
WHEN 31
THEN 'checked'
ELSE 'Null'
END AS v_akci,
nh.id_zbozi as zaskrtle_skupiny
FROM products p
INNER JOIN products_description d ON d.products_id = p.products_id
LEFT JOIN newsletters_zbozi nz ON nz.id_zbozi = p.products_id
AND nz.nl_id =31
LEFT JOIN newsletters_zbozi_skupiny nh on nh.id_zbozi = p.products_id
) AS zbozi
WHERE checkbox_checked = 'checked'
Jeho výsledkem je toto:
Ve skutečnosti by to ale měly být čtyři řádky.
Nyní se totiž v tabulce zobrazují pouze řádky z tabulky newsletters_zbozi.
Já tam, ale podle naznačeného provázání potřebuji přidat i řádky z tabulky newsletters_zbozi_skupiny.
Je můj požadavek dostatečně popsaný?
Struktura newsletters_zbozi a newsletters_zbozi_skupiny je naprosto totožná, všetně názvů sloupců.
a tato podmienka v joine plati? nh.id_zbozi = p.products_id
Ano platí.
Nakonec jsem na to ovšem namísto inteligence použil brůtalní sílu:
SELECT *
FROM (
SELECT p.products_image, d.products_name, p.products_model, d.products_id, d.products_description, p.abra_sc_id, '0' as kategorie,
CASE nz.nl_id
WHEN 31
THEN 'checked'
ELSE 'Null'
END AS checkbox_checked,
CASE nz.v_akci
WHEN 31
THEN 'checked'
ELSE 'Null'
END AS v_akci
FROM products p
INNER JOIN products_description d ON d.products_id = p.products_id
LEFT JOIN newsletters_zbozi nz ON nz.id_zbozi = p.products_id
AND nz.nl_id =31
) AS zbozi
WHERE checkbox_checked = 'checked'
UNION
SELECT *
FROM (
SELECT p.products_image, d.products_name, p.products_model, d.products_id, d.products_description, p.abra_sc_id, '1' as kategorie,
CASE nz.nl_id
WHEN 31
THEN 'checked'
ELSE 'Null'
END AS checkbox_checked,
CASE nz.v_akci
WHEN 31
THEN 'checked'
ELSE 'Null'
END AS v_akci
FROM products p
INNER JOIN products_description d ON d.products_id = p.products_id
LEFT JOIN newsletters_zbozi_skupiny nz ON nz.id_zbozi = p.products_id
AND nz.nl_id =31
) AS zbozi
WHERE checkbox_checked = 'checked'
Pomocí UNION.
Děkuji za asistenci, ještě se vrátím