使用查询从不同的表中获取信息

时间:2019-04-23 19:36:49

标签: sqlite

我正在学习SQLite,并且正在使用this数据库来学习如何正确使用查询,但是当我不得不使用多个表中的数据来获取一些信息时,我特别在努力。

例如,对于给定的数据库,是否可以获取每个客户购买的名字,姓氏和歌曲名称?

3 个答案:

答案 0 :(得分:0)

您要做的只是一个简单的SQL SELECT查询。当您说无法从多个表中获取数据时,我不确定是否要在一个查询中从所有表中获取数据,因为这不是必需的。您只需要具有SELECT查询的多个实例,只是针对不同的表(和不同的列名)。

SELECT firstName, lastName, songName FROM table_name

答案 1 :(得分:0)

您需要使用联接从多个表中获取数据。在这种情况下,建议您使用内部联接。

如果您不熟悉联接,this是一篇很好的文章,介绍了SQLite支持的不同联接类型。

  

SQLite INNER JOINS返回多个表中的所有行,其中的联接   条件满足。

此查询将返回客户的名字和姓氏以及他们购买的曲目。

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

答案 2 :(得分:0)

您必须研究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开始,在其中找到已购买的歌曲,并通过提供将设置on的列join来加入其他3个表。
要记住的另一件有用的事情:别名用于表(例如c用于客户),如果需要也用于列。