|
Нужна помощь с подзапросом
|
|||
---|---|---|---|
#18+
Добрый день. Мне необходимо вывести дома, которые имеют только записи со статусами 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, только разбираюсь. Подскажите, пожалуйста, где ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 11:32 |
|
Нужна помощь с подзапросом
|
|||
---|---|---|---|
#18+
Разобралась. Вот так заработало: where 1 = 1 and h.orponid in (select orponid from house group by orponid having max(livestatus) = 0 ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 11:44 |
|
Нужна помощь с подзапросом
|
|||
---|---|---|---|
#18+
WHERE .. IN () - почти всегда тормоза. Применимо разве что на совсем небольших таблицах. Лучше переписать на JOIN или [NOT] EXISTS. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 11:47 |
|
Нужна помощь с подзапросом
|
|||
---|---|---|---|
#18+
*Ann*, если уж с GROUP то в данном запросе можно красиво использовать GROUP BY orponid HAVING SUM(livestatus )=0 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 12:22 |
|
Нужна помощь с подзапросом
|
|||
---|---|---|---|
#18+
Alex_Ustinov можно красиво использовать HAVING SUM(livestatus )=0 А чем SUM(livestatus )=0 лучше и красивее MAX(livestatus )=0? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 12:34 |
|
|
start [/forum/topic.php?fid=47&msg=39934583&tid=1828717]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 181ms |
0 / 0 |