2013-05-06 4 views
0

Voici ce que j'ai jusqu'à présent:requêtes SQL avec plusieurs sélections

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"); 

ou devrais-je inclure WHERE artist from song="Yoko Kano" AND year from song= "1999"?

Est-ce la syntaxe correcte? Je veux juste vérifier.

+2

Non Cette syntaxe est incorrecte – Strawberry

+0

'INSERT INTO

WHERE ...' n'est pas une syntaxe correcte. Qu'attendez-vous de faire? –

+1

Vous devez apprendre à utiliser [bind_param] (http://php.net/manual/fr/mysqli-stmt.bind-param.php) pour insérer correctement des données dans vos requêtes. Votre court exemple ici est un gâchis total de valeurs mal citées et même pas citées. – tadman

Répondre

2

Pour insérer un CD, vous devriez être en mesure d'utiliser quelque chose comme:

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

Je ne vais pas vous donner une réponse complète à votre deuxième question puisque je suppose que c'est des devoirs. Je vais vous donner quelques conseils cependant.

Tout d'abord, si vous voulez une liste des producteurs, vous devez faire

SELECT * FROM producer 

Mais vous ne voulez pas tous les producteurs, vous ne souhaitez que ceux qui ont produit des CD sorti en 1999. Comment pouvez-vous obtenir une liste pour ces CD? Avec une autre requête:

SELECT * FROM cd WHERE year = 1999 

Alors, comment les combinez-vous? Avec quelque chose comme:

SELECT * FROM producteur, cd où cd.producername = producer.name et cd.year = 1999

La requête que vous avez besoin est plus complexe, vous devez inclure le fait que l'artiste soit Yoko Ono mais que l'artiste ne soit pas dans la table Cd, c'est dans la table Song. Cela signifie que vous avez besoin d'une autre jointure avec la table Song. Pour vous donner un autre indice, considérez la question, comment puis-je voir tous les CDs publiés par un artiste en particulier? Si vous voulez voir toutes les chansons d'un artiste en particulier, c'est simple:

SELECT * FROM Song WHERE artist = 'Yoko Ono' 

Qu'en est-il des CD? Vous pourriez faire:

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

Votre requête finale devra choisir parmi les trois tables et vous aurez besoin de toutes les contraintes soient en place.

+0

Merci beaucoup! Avez-vous des recommandations sur ce que je peux lire sur la façon de joindre plusieurs requêtes? Merci! –

+0

Vous êtes les bienvenus. Il y a un très bon tutoriel sur SQL ici http://philip.greenspun.com/sql/ Il couvre la jonction de nombreux autres sujets. – PhilDin

+0

Serait-ce quelque chose comme ceci: $ sql = "SELECT * FROM producteur, cd où cd.producername = producer.name et cd.year = year {SELECT artiste FROM chanson T2 INNER JOIN CD T1 sur T2.CD = T1.CD;} "); $ data = mysqli_query ($ sql); while ($ row = mysqli_fetch_array ($ data)) { print_r (rangée $)? } Par curiosité –

Questions connexes