@Octoberfest

Как выполнить такой SQL запрос?

Здравствуйте, скажите пожалуйста, как можно выбрать lead_id из такой таблице у которого есть запись с параметрами:
field_id = 805312 и field_value = 1417294800, и запись с field_id=805316 и field_value=2126254.

OPUjESDzMvk.jpg

Т.е. мне нужно получить lead_id у которого есть определенный набор записей. Having способен мне помочь?
  • Вопрос задан
  • 421 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если надо получить `lead_id`, для которого есть одновременно оба параметра с нужными значениями, то
SELECT DISTINCT `t`.`lead_id` 
  FROM `table` AS `t`
  JOIN `table` AS `t1` ON `t1`.`lead_id` = `t`.`lead_id` 
    AND `t1`.`field_id` = 805312 AND `t1`.`field_value` = 1417294800
  JOIN `table` AS `t2` ON `t2`.`lead_id` = `t`.`lead_id` 
    AND `t2`.`field_id` = 805316 AND `t2`.`field_value` = 2126254

Лишний JOIN просто для удобства сборки такого запроса. Можно заменить сразу на FROM `leads` ...
Или так:
SELECT `lead_id`
  FROM `table`
  WHERE (`field_id` = 805312 AND `field_value` = 1417294800)
    OR  (`field_id` = 805316 AND `field_value` = 2126254)
  GROUP BY `lead_id`
  HAVING COUNT(DISTINCT `field_id`) = 2

Если пары (`field_id`, `field_value`) уникальны, то DISTINCT в запросах не нужен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@mletov
SELECT `lead_id` FROM `table` 
WHERE (`field_id`=805312 AND `field_value`=1417294800)
OR  (`field_id`=805316 AND `field_value`=2126254)
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Ничего не надо, просто переводим:

field_id = 805312 и field_value = 1417294800, и запись с field_id=805316 и field_value=2126254.

в
where
(field_id = 805312 and field_value = 1417294800)
or
(field_id=805316 и field_value=2126254)

Скобки лишь для акцентов
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы