2013-05-06 122 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