Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
09.02.2022, 00:21
|
|||
---|---|---|---|
|
|||
Фильтр по колонке из вложенного запроса |
|||
#18+
Добрый день. Есть табличка `users` с деревом и связью по `id` - `parent_id`. И табличка, скажем, `mlm`, в которой могут быть юзеры из `users` - связь mlm.id - users.id. Нужно получить список юзеров первого уровня родителя `id`=1 И, которые есть в `mlm` ИЛИ у которых есть свои детки. Есть такой запрос: Код: sql 1. 2. 3. 4. 5.
После из результатов этого запроса с помощью полей in_mlm и isChl отсеиваются лишние записи. Подскажите - как сделать это одни запросом? Делаю вот так: Код: sql 1. 2. 3. 4. 5.
Но ругается, что не знает таких колонок - in_mlm и isChl. Заменил in_mlm: Код: sql 1. 2. 3. 4. 5.
А как заменить isChl? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2022, 08:03
|
|||
---|---|---|---|
|
|||
Фильтр по колонке из вложенного запроса |
|||
#18+
OlegROA После из результатов этого запроса с помощью полей in_mlm и isChl отсеиваются лишние записи. Подскажите - как сделать это одни запросом? Обернуть внешним запросом, например. OlegROA Но ругается, что не знает таких колонок - in_mlm и isChl. Выражения селекта вычисляются в последнюю очередь, для фильтра WHERE их еще не существует. А почему не просто?: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=0f72da88ab4a92194ffb4fe3dcfc5ac3 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2022, 17:34
|
|||
---|---|---|---|
|
|||
Фильтр по колонке из вложенного запроса |
|||
#18+
paver OlegROA После из результатов этого запроса с помощью полей in_mlm и isChl отсеиваются лишние записи. Подскажите - как сделать это одни запросом? Обернуть внешним запросом, например. OlegROA Но ругается, что не знает таких колонок - in_mlm и isChl. Выражения селекта вычисляются в последнюю очередь, для фильтра WHERE их еще не существует. А почему не просто?: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Ну, мне из mlm нужны некоторые данные. И, кроме всего прочего, мне в результате запроса нужны признаки in_mlm и isChl. Т.е., кроме ид юзеров нужны их данные из mlm и флаги "есть его данные в mlm" и "есть у него детки". ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.02.2022, 10:27
|
|||
---|---|---|---|
|
|||
Фильтр по колонке из вложенного запроса |
|||
#18+
OlegROA Ну, мне из mlm нужны некоторые данные. И, кроме всего прочего, мне в результате запроса нужны признаки in_mlm и isChl. Т.е., кроме ид юзеров нужны их данные из mlm и флаги "есть его данные в mlm" и "есть у него детки". Ну тогда типа так: Код: sql 1. 2. 3. 4. 5.
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=00aea56c164dcec4268929238c50ddac ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.02.2022, 13:44
|
|||
---|---|---|---|
|
|||
Фильтр по колонке из вложенного запроса |
|||
#18+
Ну или OlegROA Делаю вот так: Код: sql 1. 2. 3. 4. 5.
Но ругается, что не знает таких колонок - in_mlm и isChl. Перенести условие отсеивания в HAVING Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.02.2022, 16:55
|
|||
---|---|---|---|
|
|||
Фильтр по колонке из вложенного запроса |
|||
#18+
Спасибо! Я был уверен, что HAVING можно использовать только с GROUP BY :( ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.02.2022, 09:49
|
|||
---|---|---|---|
|
|||
Фильтр по колонке из вложенного запроса |
|||
#18+
OlegROA Я был уверен, что HAVING можно использовать только с GROUP BY :( WHERE работает до агрегирования, а HAVING после, когда все агрегаты уже вычислены и, в случае mysql, определены алиасы списка выбора. Собственно необходимости агрегации для HAVING нет никакой. НО. По замыслу HAVING работает не с первичными, а с уже сгруппированными данными, поэтому никакие индексы уже не действуют и отсев по HAVING осуществляется полным просмотром поступившей ему на вход таблицы. Поэтому использование HAVING без GROUP BY с точки зрения эффективности чаще всего малополезно. Лучше воспользоваться предложенным вариантом с двумя левыми джойнами или, может быть, с помощью оконных функций (но я в них полный нуб). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=47&tablet=1&tid=1827783]: |
0ms |
get settings: |
25ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
168ms |
get tp. blocked users: |
2ms |
others: | 389ms |
total: | 667ms |
0 / 0 |