Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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:
[http://pc.poradna.net/file/view/14804-vysledek-png    ]

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)

Předmět Autor Datum
SELECT * FROM ( SELECT p.products_image, d.products_name, p.products_model, d.products_id, d.product…
wam_Spider007 16.07.2013 17:03
wam_Spider007
Diky, hned zitra rano to otestuju! A omlouvam se ze skacu z dotazu na dotaz, ale nez poresim jednu…
Flash_Gordon 16.07.2013 18:06
Flash_Gordon
Takže prosím takto. Mám ten dotaz předělaný takhle: SELECT * FROM ( SELECT p.products_image, d.pr…
Flash_Gordon 17.07.2013 08:53
Flash_Gordon
a tato podmienka v joine plati? nh.id_zbozi = p.products_id
wam_Spider007 17.07.2013 09:16
wam_Spider007
Ano platí. Nakonec jsem na to ovšem namísto inteligence použil brůtalní sílu: SELECT * FROM ( SE… poslední
Flash_Gordon 17.07.2013 09:34
Flash_Gordon
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,
nh.pole_tabulky1,
nh.pole_tabulky2
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_hlavni nh on nh.id_zbozi = nz.id_zbozi
) AS zbozi
WHERE checkbox_checked = 'checked'

je to len nacrt ... ta podmienka v joine moze byt ine v zavislosti na tom, ako su tabulky realne prepojene.

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:
[http://pc.poradna.net/file/view/14814-vysledek-png  ]

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ů.

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 :-D

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