parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Misha v.3 21.11.2015 01:04 / 21.11.2015 01:16

1.
SELECT
	t1.*
FROM
	test AS t1
	INNER JOIN (
		SELECT
			t2.id
			, COUNT(*) AS cnt
		FROM
			test AS t2
		WHERE
			parameter_id IN (1,2)/* это OR */
		GROUP BY
			id
	) AS t3 ON (t1.id = t3.id)
WHERE
	t3.cnt = 2/* количество параметров, которые должны совпадать */
2.
SELECT
	t1.*
FROM
	test AS t1
WHERE
	(
		SELECT
			COUNT(*)
		FROM
			test AS t2
		WHERE
			t2.id = t1.id
			AND t2.parameter_id IN (1,2) /* это OR */
	) = 2 /* количество параметров, которые должны совпадать */
из этих второй запрос лучше, но нужен составной индекс по id, parameter_id