Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь с подзапросом / 6 сообщений из 6, страница 1 из 1
05.03.2020, 11:32
    #39934536
*Ann*
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с подзапросом
Добрый день.
Мне необходимо вывести дома, которые имеют только записи со статусами 0 (исторические записи). Таких записей у одного дома может быть несколько и только одна запись со статусом либо 1, либо 2, либо 3.
Например:
Вариант 1.
1. дом 1 статус 0
2. дом 1 статус 0
3. дом 1 статус 1

Вариант 2.
1. дом 2 статус 0
2. дом 2 статус 2

Вариант 3.
1. дом 3 статус 0
2. дом 3 статус 0
3. дом 3 статус 0

В запросе должны выдаваться только такие дома как в варианте 3. Строк с нулевыми статусами может быть и одна, и две, и три, и тд.

Попробовала вот так:
select * from house h
where
h.orponid in
(select orponid from house where livestatus = 0 and livestatus not in (1,2,3)
group by orponid
having max(livestatus) = 0
)

Но выдает почти все подряд. Пока вообще плохо с sql, только разбираюсь. Подскажите, пожалуйста, где ошибка.
...
Рейтинг: 0 / 0
05.03.2020, 11:44
    #39934552
*Ann*
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с подзапросом
Разобралась. Вот так заработало:

where 1 = 1
and h.orponid in
(select orponid from house
group by orponid
having max(livestatus) = 0
)
...
Рейтинг: 0 / 0
05.03.2020, 11:47
    #39934559
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с подзапросом
WHERE .. IN () - почти всегда тормоза. Применимо разве что на совсем небольших таблицах. Лучше переписать на JOIN или [NOT] EXISTS.
...
Рейтинг: 0 / 0
05.03.2020, 12:22
    #39934583
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с подзапросом
*Ann*,

если уж с GROUP то в данном запросе можно красиво использовать
GROUP BY orponid
HAVING SUM(livestatus )=0
...
Рейтинг: 0 / 0
05.03.2020, 12:34
    #39934596
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с подзапросом
Alex_Ustinov
можно красиво использовать
HAVING SUM(livestatus )=0

А чем SUM(livestatus )=0 лучше и красивее MAX(livestatus )=0?
...
Рейтинг: 0 / 0
05.03.2020, 12:53
    #39934603
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с подзапросом
paver,

мда, ничем, я не обратил внимание на тот запрос)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь с подзапросом / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]