Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/40: Рейтинг темы: голосов - 40, средняя оценка - 4.58
0 / 0 / 2
Регистрация: 26.01.2016
Сообщений: 81

SELECT WHERE IN с подзапросом

30.04.2018, 11:43. Показов 7838. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я в sql не очень разбираюсь, поэтому не ругайтесь, если что-то совсем простое спрашиваю.
Есть таблица recording с полем asrtist_credit. Я хочу выбрать все записи из recording, если artist_credit находится в списке получаемом из подзапроса.
Подзапрос выглядит примерно так

SQL
1
2
3
4
5
SELECT artist_credit.id
                    FROM artist
                        INNER JOIN artist_credit_name ON artist.id = artist_credit_name.artist
                        INNER JOIN artist_credit ON artist_credit_name.artist_credit = artist_credit.id
                        WHERE artist.id = '5845'
В результате получаю список с artist_credit, по которым нужно найти соответствующие записи в таблице recording.

В общей сложности запрос выглядит так:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT *
            
            FROM recording 
            WHERE recording.artist_credit 
            IN (
                SELECT ARRAY (
                    ПОДЗАПРОС
                )
            )                   
            
            WHERE recording.id > 0
            ORDER BY recording.id
            LIMIT 100;
Получаю ошибку:
{ error: ошибка синтаксиса (примерное положение: "WHERE")

Я бы мог прилепить сюда еще третий INNER JOIN, т.к. все таблицы связаны:
recording.artist_credit <--> artist_credit.id <--> artist_credit_name.artist_credit, artist_credit_name.artist <--> artist.id
но тогда запрос идет очень долго. Записей в recording таблице больше 18млн, в artist - больше 1млн. Если слепить 3 INNER JOIN то запрос идет на секунды ~ 5-20секунд. Думал как это оптимизировать, решил может с подзапросом быстрее будет, сам подзапрос выполняется относительно быстро ~ 100-500 msec

Добавлено через 2 минуты
На этот WHERE ругается
Цитата Сообщение от WhatIsHTML Посмотреть сообщение
WHERE recording.artist_credit
* * * * * * IN
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2018, 11:43
Ответы с готовыми решениями:

Запрос с подзапросом insert / select
прочитал в интернете про запрос с подзапросом вида INSERT...SELECT пытаюсь сам смастерить, но не получается. подскажите, где ошибка?...

WHERE не видит колонку, созданную подзапросом SELECT
Создал запрос: select postpaid_account.*,(select min(radacct.acctstarttime) from radacct where username=postpaid_account.username) as...

Запрос с подзапросом
Задание: Вывести на экран записи, содержащие следующие поля: Код дисциплины, Название дисциплины, Количество студентов, которые сдали эту...

1
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
30.04.2018, 12:58
Лучший ответ Сообщение было отмечено WhatIsHTML как решение

Решение

SQL
1
2
3
4
5
SELECT * FROM recording WHERE 
  recording.artist_credit IN ( ПОДЗАПРОС ) AND
  recording.id > 0
ORDER BY recording.id 
LIMIT 100;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2018, 12:58
Помогаю со студенческими работами здесь

Выборка с подзапросом
Всем привет!) Хочу найти максимальное значение по столбцу product.quantity. В подзапросе я это поле суммирую с целью чтобы потом из...

Запрос с подзапросом
Всем привет. пишу курсовую по БД и столкнулся с проблемой: нужно объединить 2 запроса в 1. В Access все хорошо получается, но...

Запрос с подзапросом
Нужно сделать запрос: &quot;Для каждого года выбрать тот месяц/месяцы, на который приходилось наибольшее число продаж.&quot; Но я могу...

Запрос с подзапросом
SELECT Студенты., Студенты., Студенты., Avg(.Оценка) AS FROM Студенты INNER JOIN ON Студенты. = . WHERE = ( SELECT MAX() AS FROM...

Запрос с подзапросом
В старой теме что то никто не подсказал https://www.cyberforum.ru/mysql/thread1924660.html Возможно слишком размыто описал. Сформулирую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru