Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: выборка из базы, несколько условий для вывода
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » выборка из базы, несколько условий для вывода

Страниц (1): [1]
 

1. DlTA - 10 Марта, 2021 - 14:10:43 - перейти к сообщению
Добрый

мне нужно выбрать из базы значение которое выдается несколько раз
на примере, в 2х таблицах t1, t2. с полями id, p1 и id, p2
t1:
id | p1
t2:
id | p2
в запросе
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT
  3.   t1.id
  4. FROM
  5.   t1
  6.   JOIN t2 ON t1.p1=t2.id
  7. WHERE
  8.   t2.p2 IN (1,2,3)
  9.  

нужны t1.id те записей где t2.p2=1 и t2.p2=2 и t2.p2=3

примерно как:
Спойлер (Отобразить)
смотрим только на те id где cnt=3


НО как такое запросить у базы?
2. DlTA - 12 Марта, 2021 - 14:58:11 - перейти к сообщению
мне придумался один вариант:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id
  2. FROM
  3. (
  4.   SELECT id,COUNT(id) AS cnt
  5.   FROM
  6.   (
  7.     SELECT
  8.       id
  9.     FROM
  10.       tab
  11.     WHERE
  12.     ...
  13.   ) AS t
  14.   GROUP BY id
  15. ) AS t
  16. WHERE
  17.   cnt>2

запрос состоит на 3 уровня (или как оно называется)
в начале выборка, потом определяем сколько раз повторяется, а на верхнем отсекаем малое повторение, в запросе cnt>2

вроде как то можно это сделать через HAVING но у меня нормально не работало.

 

Powered by ExBB FM 1.0 RC1