SQL: получить информацию из нескольких таблиц в одном запросе - PullRequest
0 голосов
/ 09 марта 2019

Я новичок в SQL, и у меня есть вопрос по объединению таблиц в запросе.

Я получил эти три таблицы:

Таблица 1: песни

Столбцы: id, заголовок

Таблица 2: song_artists

Столбцы: id, song_id, artist_id

Таблица 3: художники

Столбцы: id, имя

В качестве примера при вставке песни Memories от David Guetta feat. Малыш Куди в базу данных, это может выглядеть так:

Таблица 1:

id=1, title="Memories"

Таблица 2:

id=1, song_id=1, artist_id=1
id=2, song_id=1, artist_id=2

Таблица 3:

id=1, name="David Guetta"
id=2, name="Kid Cudi"

Теперь я хочу получить список всех песен с их названием и исполнителями, но я не знаю, как объединить эти 3 таблицы в одном SQL-выражении.

Ответы [ 2 ]

1 голос
/ 09 марта 2019

Используйте объединения , что позволяет объединять строки на основе их отношения эквивалентности:

SELECT title, song_id, artist_id, name FROM Table_1, Table_2, Table_3
    INNER JOIN Table_2 ON Table_1.id=Table_2.id
    INNER JOIN Table_3 ON Table_2.id=Table_3.id
1 голос
/ 09 марта 2019

Чтобы получить данные по таблицам, вы должны использовать JOIN, который может быть выражен следующим образом:

SELECT title, name 
FROM table1, table2, table3 
WHERE table1.id = table2.song_id AND table3.id = table2.artist_id
ORDER BY title

В качестве альтернативы вы можете использовать INNER JOIN, что в основном то же самое.Если так, если я не ошибаюсь, это было бы так:

SELECT table1.title, table1.name 
FROM table1
INNER JOIN table2 ON table1.id = table2 .song_id
INNER JOIN table3 ON table3.id = table2.artist_id
ORDER BY table1.title
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...