Autor Zpráva
Ivorius
Profil
Pro výběr z parametrů používám tento dotaz:

SELECT p.id, p.nazev, GROUP_CONCAT(pc.hodnota SEPARATOR ';) AS seznam_hodnot, GROUP_CONCAT(pc.id SEPARATOR ';') AS seznam_id
                      FROM parametry p
                      JOIN parametry_hodnoty ph ON (p.id = ph.id_parametru)
                      JOIN parametry_ciselniky pc ON (ph.id_ciselniku = pc.id)
                      WHERE p.typ = 'ciselnik' AND ph.id_zbozi = ".intval($_GET['select'])."
                      GROUP BY p.id
                      HAVING count(*) >= 2


Ve zkratce jde o to, že se vyberou všechny parametry, k nim se přidají parametrické číselníky a vypíšou se pouze ty parametry, které mají 2 a více číselníků.

Lze nějak zapsat MySQL dotaz tak, abych to nemusel seskupovat a používat GROUP_CONCAT ( který následně za pomocí explode předávám zase do pole) ale přitom se vypsali pouze ty záznamy, kde je 2 a více číselníků?
Kajman_
Profil *
SELECT p.id, p.nazev, pc.hodnota, pc.id pcid
	FROM parametry p
	JOIN parametry_hodnoty ph ON (p.id = ph.id_parametru)
	JOIN parametry_ciselniky pc ON (ph.id_ciselniku = pc.id)
	JOIN (select p.id from parametry p2
		JOIN parametry_hodnoty ph2 ON (p2.id = ph2.id_parametru)
		JOIN parametry_ciselniky pc2 ON (ph2.id_ciselniku = pc2.id)
		WHERE p2.typ = 'ciselnik' AND ph2.id_zbozi = ".intval($_GET['select'])."
		group by p2.id having count(*)>=2
	) t on (p.id=t.id)
	WHERE p.typ = 'ciselnik' AND ph.id_zbozi = ".intval($_GET['select'])."

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0