таблица запросов с использованием другой справочной таблицы sql - PullRequest
1 голос
/ 01 марта 2020

Я ищу все имена и URL исполнителей, которые сохранил пользователь с user_id 57.

Таблица "Artist"

    id | name         | url
    ---+--------------+--------
    01 | Luke Combs   | url-1
    02 | Jason Aledan | url-2
    03 | Upchurch     | url-3
    04 | Lee Brice    | url-4
    05 | Khalid       | url-5

Таблица поиска user_artists:

    user_id | artist_id
   ---------+-----------
         02 | 05
         15 | 01
         37 | 01
         57 | 03
         57 | 01
         28 | 02

Желаемый результат для user_id = 57:

    name        | url
    ------------+--------
    Luke Combs  | url-1
    Upchurch    | url-3

Моя попытка:

SELECT name, url, user_id 
FROM artists, user_artists 
INNER JOIN user_artists.user_id ON artists.name 
WHERE user_id = 57; 

Запросы SQL кажутся мне настолько запутанными. Я даже не уверен, правильное ли внутреннее соединение. Я потратил весь день на поиски этих запросов и, наконец, получил их с помощью генератора SQL. Любая помощь, большое спасибо!

1 Ответ

0 голосов
/ 01 марта 2020

Вы не упомянули, для чего предназначена конкретная РСУБД - а различные РСУБД не на 100% совместимы в том, как они "интерпретируют" стандарты SQL - но я думаю, что-то вроде этого должно работать практически в любой СУБД:

SELECT name, url, user_id 
FROM artists a
INNER JOIN user_artists ua ON ua.artist_id = a.id
WHERE ua.user_id = 57; 

В основном вы берете эти строки из user_artists, где user_id соответствует желаемому значению, а затем вы присоединяетесь к таблице artists через «ссылку» между user_artists.artist_id на столбец artist.id - и вы получите желаемый результат.

...