powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь с подзапросом
6 сообщений из 6, страница 1 из 1
Нужна помощь с подзапросом
    #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
Нужна помощь с подзапросом
    #39934552
*Ann*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобралась. Вот так заработало:

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

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

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

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


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