speedkiller
Messages postés23Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 septembre 2008
-
23 mai 2006 à 14:43
speedkiller
Messages postés23Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 septembre 2008
-
23 mai 2006 à 15:31
Est ce que quelqu'un pourrait me dire pourquoi ma requete ne fonctionne pas, elle me parait pourtant correcte mais j'obtiens l'erreur suivante:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT noSysteme FROM SYSTEME as s WHERE s.n
$query_noPoteau="SELECT noPoteau FROM POTEAU as p
WHERE p.lettrePoteau='".$lettrePoteau."'
AND p.nombrePoteau='".$nombrePoteau."'
AND p.noSysteme IN ( SELECT noSysteme FROM SYSTEME as s
WHERE s.nomSysteme = '".$nomSysteme."'
AND s.noBatiment IN (SELECT noBatiment FROM BATIMENT as b
WHERE b.nomBatiment='".$nomBatiment."'));";
speedkiller
Messages postés23Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 septembre 2008 23 mai 2006 à 14:51
par contre j'ai une erreur , je remets la requete:
$query_noPoteau="SELECT noPoteau FROM POTEAU as p
WHERE p.lettrePoteau='".$lettrePoteau."'
AND p.nombrePoteau='".$nombrePoteau."'
AND p.noSysteme = ( SELECT noSysteme FROM SYSTEME as s
WHERE s.nomSysteme = '".$nomSysteme."'
AND s.noBatiment = (SELECT noBatiment FROM BATIMENT as b
WHERE b.nomBatiment='".$nomBatiment."'));";
sidf
Messages postés1216Date d'inscriptionmardi 20 décembre 2005StatutMembreDernière intervention18 octobre 20125 23 mai 2006 à 14:52
$query_noPoteau="SELECT * FROM POTEAU
WHERE lettrePoteau='$lettrePoteau'
AND nombrePoteau='$nombrePoteau'
AND noSysteme IN ( SELECT * FROM SYSTEME
WHERE SYSTEME.nomSysteme = '$nomSysteme'
AND SYSTEME.noBatiment IN (SELECT noBatiment FROM BATIMENT
WHERE BATIMENT.nomBatiment='$nomBatiment' )) ";
speedkiller
Messages postés23Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 septembre 2008 23 mai 2006 à 14:54
je mets le script de creation des tables concernées pour que ce soit plus compréhensible:
CREATE TABLE IF NOT EXISTS BATIMENT(
noBatiment int not null auto_increment,
nomBatiment varchar(4),
PRIMARY KEY(noBatiment),
UNIQUE(noBatiment)) Type=InnoDB;
CREATE TABLE IF NOT EXISTS SYSTEME(
noSysteme int not null auto_increment,
nomSysteme varchar(4),
noBatiment int,
PRIMARY KEY(noSysteme),
INDEX (noBatiment),
UNIQUE(nomSysteme),
CONSTRAINT fk_systeme FOREIGN KEY(noBatiment)
REFERENCES BATIMENT(noBatiment) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB;
CREATE TABLE IF NOT EXISTS POTEAU(
noPoteau int not null auto_increment,
lettrePoteau varchar(1),
nombrePoteau varchar(5),
noSysteme int,
PRIMARY KEY(noPoteau),
INDEX(noSysteme),
CONSTRAINT fk_poteau_2 FOREIGN KEY(noSysteme)
REFERENCES SYSTEME(noSysteme) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB;
speedkiller
Messages postés23Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 septembre 2008 23 mai 2006 à 14:57
ben en fait $lettrePoteau est une valeur recupérée aprés l'envoi d'un formulaire à l'aide d'un $_POST tout comme $nomSysteme, $nomBatiment, et $nombrePoteau
sidf
Messages postés1216Date d'inscriptionmardi 20 décembre 2005StatutMembreDernière intervention18 octobre 20125 23 mai 2006 à 14:58
ça j'avais compris
mais tu qualifies un champ avec un autre
alors je me répète...
$query_noPoteau="SELECT * FROM POTEAU
WHERE lettrePoteau='$lettrePoteau'
AND nombrePoteau='$nombrePoteau'
AND noSysteme IN ( SELECT * FROM SYSTEME
WHERE SYSTEME.nomSysteme = '$nomSysteme'
AND SYSTEME.noBatiment IN (SELECT noBatiment FROM BATIMENT
WHERE BATIMENT.nomBatiment='$nomBatiment' )) ";
speedkiller
Messages postés23Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 septembre 2008 23 mai 2006 à 15:03
j'ai essayé de separer toutes les requetes et les rendre indépendantes les unes des autres, et elle fonctionnent. Apparemment, c'est l'utilisation de sous-requêtes qui ne fonctionne pas
speedkiller
Messages postés23Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 septembre 2008 23 mai 2006 à 15:07
Et je ne veux pas recuperer l'ensemble des champs de la table, j'ai juste besoin de la valeur du numero de poteau pour pouvoir creer un autre objet (une armoire en l'occurence)
en fait une armoire est située à un poteau (dont je possède le nom sachant que chaque poteau est unique) qui est situé dans un système qui lui est situé dans un bâtiment