Problème requete SQL

M@rie -  
sangokudu92 Messages postés 166 Statut Membre -
Bonjour tout le monde !

J'ai besoin de votre matière grise ! Je débute en informatique et je n'arrive pas à réaliser une requête SQL, je m'explique je dois insérer des données dans une table associative provenant de deux tables différentes.
Table 1 : client
id_client
nom_client
pre_client

Table 2 : voiture
id_voiture
Marque
KM
energie
conso
prix

Table associative : achète
id_client_FK
id_voiture_FK

Je dois donc réaliser un INSERT dans la table associative "acheter" dont les valeurs proviennent de la table "client" et "voiture".

J'ai déjà réalisé :

INSERT (`id_client` ,`nom_client` ,`pre_client` )
VALUES ('0', 'Martin', 'Jean')
AND INSERT (`id_voiture` ,`marque` ,`KM` ,`energie` ,`conso` ,`prix` )
VALUES ('0', 'Peugeot', '60000', 'diesel', '2', '8000')
INTO acheter


et j'ai l'erreur :

#1064 - Erreur de syntaxe près de '(`id_client` ,`nom_client` ,`pre_client` )
VALUES ('0', 'Martin' à la ligne 1

DONC SVP aidé moi

Merci

2 réponses

MrSlave Messages postés 2657 Statut Membre 147
 
Ca ne pourra pas marcher.

Ta table achete ne peut prendre que 2 valeurs et tu éssaye de lui en passer 9.
0
M@rie
 
Alors comment dois je faire ? car j'avoue je ne trouve pas de solution.
0
MrSlave Messages postés 2657 Statut Membre 147
 
Pourquoi tu ne fais pas :
"Insert into acheter values (0,0)";

Ou

"Insert into acheter (`id_client`,`id_voiture`) values (0,0)"

Après ça dépend si tu veux que tout se fasse tout seul ou pas. Parce qu'avec mes requêtes il va t'insérer 0 et 0 dans ta table acheter.
0
M@rie
 
J'avais essayé cela mais ca ne fonctionne pas non plus:

$sql="INSERT INTO acheter( `id_client` , `nom_client` , `pre_client`,`id_voiture`, `Marque` , ' ', `KM` , ' ', `energie` , ' ', `conso` , ' ', `prix` )
VALUES ('', '$nom_client', '$pre_client','' , 'marque','$KM','$conso','$energie')";
0
MrSlave Messages postés 2657 Statut Membre 147 > M@rie
 
Tu ne pourras pas insérer plus de champs que ta table n'en contient.
Soit tu drop et recréer ta table acheter avec les champs id_client` , `nom_client` , `pre_client`,`id_voiture`, `Marque` , ' ', `KM` , ' ', `energie` , ' ', `conso` , ' ', `prix`.
Soit tu n'insère que 2 valeurs (vu que tu as créée ta table avec 2 champs).

Quand à ta requête elle ne pourra pas marcher, parce que tu dis que tu vas insérer des valeurs dans les champs id_client` , `nom_client` , `pre_client`,`id_voiture`, `Marque` , ' ', `KM` , ' ', `energie` , ' ', `conso` , ' ', `prix` mais tu ne lui donne que 8 valeurs.
De plus pourquoi mettre '' comme champs ? Soit il y en a et tu les met, soit il n'y en a pas et tu ne les met pas.
0
sangokudu92 Messages postés 166 Statut Membre 7 > M@rie
 
Bonjour,
je te conseil de supprimer ta table acheter et en la remplacant par une clé etrangère dans la table client.

CLIENT
id_client
nom_client
...
#id_voiture.
0
M@rie > MrSlave Messages postés 2657 Statut Membre
 
oui mais lorsque que j'éxécute la requete :

"Insert into acheter (`id_client`,`id_voiture`) values (0,0);"

j'ai :

Champ 'id_client' inconnu dans field list
0
MrSlave Messages postés 2657 Statut Membre 147 > M@rie
 
C'est ma faute, j'ai copié-collé.
Enlève les ' '.
Ca donne : Insert into acheter (id_client,id_voiture) values (0,0);

Mais je le répète, tu auras 0 et 0 dans ta table.
0