2013-05-06 104 views
0

这是我到目前为止有:多项选择SQL查询

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"

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

+2

编号此语法错误 – Strawberry 2013-05-06 14:53:53

+0

'INSERT INTO

WHERE ...'不正确的语法。你期望做什么? – 2013-05-06 14:55:00

+1

您需要学习如何使用[bind_param](http://php.net/manual/en/mysqli-stmt.bind-param.php)在您的查询中正确插入数据。这里的简短例子是一个错误引用的混乱,甚至没有引用的值。 – tadman 2013-05-06 14:55:02

回答

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的清单?用另一个查询:

SELECT * FROM cd WHERE year = 1999 

那么你如何结合这些?喜欢的东西:

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

你需要的是更复杂的查询,你需要包括艺术家是小野洋子,但艺术家不在Cd表中,它在宋表中。这意味着您需要与歌曲表进行另一次连接。为了给你提供另一个线索,考虑一下这个问题,我如何看到特定艺术家发布的所有CD?如果你想看一个特定的艺术家的所有歌曲,这很容易:

SELECT * FROM Song WHERE artist = 'Yoko Ono' 

怎么样的CD?你可以这样做:

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

你最终的查询需要从所有三个表选择,你需要所有的约束必须到位。

+0

非常感谢!关于加入多个查询,你有什么建议吗?谢谢! – 2013-05-06 15:17:52

+0

你很受欢迎。这里有一个关于SQL的非常好的教程http://philip.greenspun.com/sql/它涵盖了加入其他许多主题。 – PhilDin 2013-05-06 15:37:19

+0

它会是这样的:$ sql =“选择*从生产者,cd其中cd.producername = producer.name和cd.year =年份{选择艺术家从歌曲T2内部联接光盘T1在T2.CD = T1。CD;}“); $ 数据= mysqli_query($ SQL); 而($行= mysqli_fetch_array($数据)){ 的print_r($行); }出于好奇 – 2013-05-06 16:49:29