|
Фильтр по колонке из вложенного запроса
|
|||
---|---|---|---|
#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, 00:21 |
|
Фильтр по колонке из вложенного запроса
|
|||
---|---|---|---|
#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, 08:03 |
|
Фильтр по колонке из вложенного запроса
|
|||
---|---|---|---|
#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" и "есть у него детки". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 17:34 |
|
Фильтр по колонке из вложенного запроса
|
|||
---|---|---|---|
#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, 10:27 |
|
Фильтр по колонке из вложенного запроса
|
|||
---|---|---|---|
#18+
Ну или OlegROA Делаю вот так: Код: sql 1. 2. 3. 4. 5.
Но ругается, что не знает таких колонок - in_mlm и isChl. Перенести условие отсеивания в HAVING Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2022, 13:44 |
|
Фильтр по колонке из вложенного запроса
|
|||
---|---|---|---|
#18+
Спасибо! Я был уверен, что HAVING можно использовать только с GROUP BY :( ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2022, 16:55 |
|
Фильтр по колонке из вложенного запроса
|
|||
---|---|---|---|
#18+
OlegROA Я был уверен, что HAVING можно использовать только с GROUP BY :( WHERE работает до агрегирования, а HAVING после, когда все агрегаты уже вычислены и, в случае mysql, определены алиасы списка выбора. Собственно необходимости агрегации для HAVING нет никакой. НО. По замыслу HAVING работает не с первичными, а с уже сгруппированными данными, поэтому никакие индексы уже не действуют и отсев по HAVING осуществляется полным просмотром поступившей ему на вход таблицы. Поэтому использование HAVING без GROUP BY с точки зрения эффективности чаще всего малополезно. Лучше воспользоваться предложенным вариантом с двумя левыми джойнами или, может быть, с помощью оконных функций (но я в них полный нуб). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 09:49 |
|
|
start [/forum/topic.php?fid=47&fpage=1&tid=1827783]: |
0ms |
get settings: |
16ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
39ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
138ms |
get tp. blocked users: |
1ms |
others: | 2488ms |
total: | 2698ms |
0 / 0 |