我正在学习SQLite,并且正在使用this数据库来学习如何正确使用查询,但是当我不得不使用多个表中的数据来获取一些信息时,我特别在努力。
例如,对于给定的数据库,是否可以获取每个客户购买的名字,姓氏和歌曲名称?
答案 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
用于客户),如果需要也用于列。