Использование запросов для получения информации из разных таблиц - PullRequest
0 голосов
/ 23 апреля 2019

Я изучаю SQLite и использую эту базу данных, чтобы узнать, как правильно использовать запросы, но мне особенно трудно, когда мне нужно использовать данные из нескольких таблиц для получения некоторой информации.

Например, есть ли в данной базе данных способ получить имя, фамилию и название песен, купленных каждым покупателем?

Ответы [ 3 ]

0 голосов
/ 23 апреля 2019

Вам нужно использовать объединения для получения данных из нескольких таблиц.В этом случае я бы порекомендовал вам использовать внутренние объединения.

Если вы не знакомы с объединениями, this - очень хорошая статья, объясняющая различные типы объединений, поддерживаемые в SQLite.

ВНУТРЕННИЕ СОЕДИНЕНИЯ SQLite возвращают все строки из нескольких таблиц, в которых выполняется условие объединения.

Этот запрос возвращает имя и фамилию клиентов, а также отслеживает ихкуплено.

select customers.FirstName,
       customers.LastName,
       tracks.name as PurchasedTracks from invoice_items
inner join invoices on invoices.InvoiceId = invoice_items.InvoiceId
inner join customers on invoices.CustomerId = customers.CustomerId
inner join tracks on invoice_items.TrackId = tracks.TrackId
order by customers.LastName
0 голосов
/ 23 апреля 2019

Вы должны изучить о JOINS:

select
  c.FirstName,
  c.LastName,
  t.Name
from invoice_items ii
inner join tracks t on t.trackid = ii.trackid
inner join invoices i on i.invoiceid = ii.invoiceid
inner join customers c on c.customerid = i.customerid

В этом запросе участвуют 4 таблицы, и диаграмма в ссылке, которую вы разместили, точно показывает их взаимосвязь.
Итак, вы начинаете со таблицы invoice_items, где вы найдете купленные песни, и присоединяетесь к другим 3 таблицам, предоставляя столбцы on, в которых будет установлен join.
Помните еще одну полезную вещь: псевдонимы для таблиц (например, c для клиентов) и, если необходимо, также для столбцов.

0 голосов
/ 23 апреля 2019

Все, что вам нужно сделать, это простой запрос SQL SELECT.Когда вы говорите, что у вас проблемы с получением из нескольких таблиц, я не уверен, пытаетесь ли вы получить данные из всех таблиц в одном запросе, так как в этом нет необходимости.Вам просто нужно иметь несколько экземпляров запроса SELECT, только для разных таблиц (и разных имен столбцов).

SELECT firstName, lastName, songName FROM table_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...