具有多个选择的SQL查询

时间:2013-05-06 14:50:54

标签: php mysql database mysqli

这是我到目前为止所拥有的:

enter image description here

//Insert a CD supplied by a particular supplier and produced by a particular producer 
Mysqli_query($con, "INSERT INTO CD WHERE suppliername = "Sony" AND producername = "Gold Records" (CD name, CD type, CD year) 
VALUES ('CDname', 'CDtype', 'CDyear')");

//List producers information who produce CD of a particular artist released in a particular year 
mysqli_query($con, "SELECT name from producers WHERE CD artist="Yoko Kano" AND year= "1999");

或者我应该包括WHERE artist from song="Yoko Kano" AND year from song= "1999"吗?

这是正确的语法吗?只是想仔细检查一下。

1 个答案:

答案 0 :(得分:2)

要插入CD,您应该可以使用以下内容:

INSERT INTO cd (suppliername, producername, title, type, year) 
VALUES ('Sony', 'Gold Records', 'My CD Title', 'My CD Type', 2008)

我不打算给你第二个问题的完整答案,因为我假设这是作业。我会给你一些指导。

首先,如果你想要一个生产者列表,你需要做

SELECT * FROM producer

但是你不想要每个制作人,你只想要1999年发行CD的那些制作者。你怎么能得到这些CD的清单?使用另一个查询:

SELECT * FROM cd WHERE year = 1999

那你怎么把这些结合起来呢?有类似的东西:

  

SELECT * FROM producer,cd其中cd.producername = producer.name和   cd.year = 1999

您需要的查询更复杂,您需要包括艺术家是Yoko Ono但艺术家不在Cd表中的事实,它在Song表中。这意味着您需要与Song表进行另一次连接。为了给你另一条线索,请考虑一个问题,我如何看到特定艺术家发布的所有Cds?如果你想看一个特定艺术家的所有歌曲,这很容易:

SELECT * FROM Song WHERE artist = 'Yoko Ono'

Cds怎么样?你可以这样做:

SELECT * FROM Cd, Song WHERE Song.CdTitle = Cd.Title

您的最终查询需要从所有三个表中进行选择,并且您需要具备所有约束。