Requete sql

Résolu
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 septembre 2008 - 23 mai 2006 à 14:43
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 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."'));";

15 réponses

speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 septembre 2008
23 mai 2006 à 15:31
marche pas mais tant pis je vais me debrouiller autrement, mais merci quand  même
3
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
23 mai 2006 à 14:47
salut

je ne comprends pas la qualif ?

$query_noPoteau="SELECT noPoteau FROM POTEAU as p
      WHERE p.lettrePoteau='".$lettrePoteau."'  
0
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 septembre 2008
23 mai 2006 à 14:48
qu'est ce que tu ne comprends pas?
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
23 mai 2006 à 14:49
c'est quoi p.lettrePoteau ???
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 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."'));";
0
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 septembre 2008
23 mai 2006 à 14:52
ah c'est un objet de mon modele en fait j'ai des poteaux qui sont définis par une lettre, un nombre et l'appartenance à un système
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
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' )) ";

ce serait pas ça que tu voudrais faire...
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
23 mai 2006 à 14:54
quand tu ecris SELECT noPoteau FROM POTEAU as p...

p   c'est   noPoteau    ok ?

donc ça
WHERE p.lettrePoteau='".$lettrePoteau."'
je ne vois pas bien...
0
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 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;
0
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 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
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
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' )) ";
0
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 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
0
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 septembre 2008
23 mai 2006 à 15:04
J'ai deja essayé la requête que tu m'as donné mais ça me donne exactement la même erreur
0
speedkiller Messages postés 23 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 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
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
23 mai 2006 à 15:18
ok alors

$query_noPoteau="SELECT * FROM POTEAU
      WHERE lettrePoteau='$lettrePoteau'
      AND nombrePoteau='$nombrePoteau'

      AND noSysteme IN ( SELECT * FROM SYSTEME     
            WHERE SYSTEME.nomSysteme = '$nomSysteme')

            AND noBatiment IN (SELECT noBatiment FROM BATIMENT
                     WHERE BATIMENT.nomBatiment='$nomBatiment' ) ";





pb de parenthèses peut etre
0
Rejoignez-nous