begin process at 2012 02 04 20:01:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Requêtes imbriquées. Erreur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Requêtes imbriquées. Erreur

mercredi 17 mai 2006 à 10:47:05 | Requêtes imbriquées. Erreur

patatedu65

Membre Club
Bonjour,

j'aimerai qu'on m'aide à toruver une solution au problème que je vous expose tout de suite.
J'ai développé un site en PHP/MySQL. J'ai fait mes tests en local avec easyPHP 1.8.0.1 qui met en place un serveur MySQL version 4.1.9. Tout marchait nickel jusqu'au jour où j'ai mis le site en ligne sur un serveur dont la version du MySQL est 3.23.49. Et là une seule requête ne fonctionne pas, la seule qui utilise NOT IN et qui comprend dont une imbrication de requête.
 La requête :
SELECT Champs1T1,Champs2T1,Champs3T1,Champs4T1 FROM table1
                        WHERE Champs5T1='$xxxxxxx'
                        AND Champs1
                        NOT IN (SELECT table2.Champs1T2 FROM table2,table1
                        WHERE table2.Champs1T2=table1.Champs1T1
                        AND table2.Champs6T2='$yyyyyyyy')

Le retour d'erreur :
   Erreur SQL !<br>SELECT Champs1T1,Champs2T1,Champs3T1,Champs4T1 FROM table1 
WHERE Champs5T1='0310160F'
AND Champs1
NOT IN (SELECT table2.Champs1T2 FROM table2,table1
WHERE table2.Champs1T2=table1.Champs1T1
AND table2.Champs6T2='2')
<br>You have an error in your SQL syntax near
'SELECT SELECT table2.Champs1T2 FROM table2,table1

WHERE table2' at line 4
Ca vient peut être pas du fait que c'est une imbrication...je ne suis pas certain. C'est bien pour ça que, pour une fois, je demande de l'aide. Merci d'avance

jeudi 18 mai 2006 à 19:15:57 | Re : Requêtes imbriquées. Erreur

crilun



crilun

oui ton probleme viens des requetes imbriqués qui ne sont pas tres bien geré avant la version 4 de mysql,
en tout cas se ressemble drolement à un projet de cours quon devellope en local et ou les profs veulent qeu ca tourne sur leur version de mysql ;-)
enfin bon voila ce que eje te propose,
il faut jouer avec les jointures :

SELECT 
T1.Champs1T1,
T1.Champs2T1,
T1.Champs3T1,
T1.Champs4T1
FROM
table1 T1
LEFT JOIN table2 T2 ON T1.champs1=T2.champs1
WHERE
T1.Champs5='0310160F'
AND
T2.Champs1 IS NULL
AND
T2.champs6=2

en fait tu fais une jointure,
si le champs n'existe pas il va te remplir ta colonne jointe avec NULL
et donc tu mets la clause
T2.Champs1 IS NULL
et tu recupere uniquement ceux qui sont dans T1 masi pas dans T2

tiens moi au courant si aca a marché car la j'ia pas de quoi tester.


vendredi 19 mai 2006 à 08:48:58 | Re : Requêtes imbriquées. Erreur

patatedu65

Membre Club
Salut,
Merci pour ta réponse. Malheureusement, même si il y a pas d'erreur, je n'ai pas le résultat voulu.
à vrai dire j'aurai dû donner le MCD des deux tables pour mieux faire comprendre ce que je veux.

vendredi 19 mai 2006 à 09:17:43 | Re : Requêtes imbriquées. Erreur

patatedu65

Membre Club
J'ai pas pu le faire plus gros désolé ;). Maintenant, puisque le projet n'est pas confidentiel je donne la requête qui marche en MySQL 4.1 telle qu'elle est vraiment :

SELECT
    IdClasse1,
    Niveau5,
    NomClasse,
    EffTemp
FROM
        classe
WHERE
        IdEtabl6="'.$var1.'"
 AND
        IdClasse1  NOT IN
                                (SELECT
                                        groupelangue.IdClasse1
                                 FROM
                                        groupelangue,classe
                                 WHERE
                                        groupelangue.IdClasse1=classe.IdClasse1
                                 AND
                                        groupelangue.IdCours22="'.$recu_IdCours22.'")
Dnc je veux afficher dans un menu déroulant toutes les classes comprises dans un établissement sauf celles qui ont été déjà incluses dans un cour de langue bien déterminé. Sachant qu'un cours de langue est composé de plusieurs groupes ('groupelangue') qui sont des parties de classe ou des classes entières.

Exemple : j'ai une classe de CE1 avec 35 élèves , un CE2 de 28 et  une troisième classe de CM1 de 27 gosses
 Je fais un groupe de10 élèves à partir du CE1 et un  avec 18 élèves du CE2 et je les ajoute dans un cours de langue (le N°2 admettons) à partir de l'interface qui permet d'ajouter un groupe issu d'une classe (ou une classe entière) dans un cours de langue. Le groupe de CE1 sera le N°1 et celui du CE2 le 2. Je n'inclus pas d'élèves du CM1 dans un cours
Etant donné que les classes de CE1 et de CE2 ont servi à créer un cours de langue je ne devrais plus les voir dans mon menu déroulant sauf la classe de CM1 qui n'a servi ni dans ce cours N°2 ni dans aucun autre cours de langue.
Jespère que c clair.
Donc cette requête fonctionne à merveille en version MySQL 4.1 mais bien sur pas en 3.23. Mon collègue cherche des alternatives en attendant que le serveur distant soit upgradé mais bien sur c'est pas pour de suite :(
Donc voilà pour quoi je cherche une idée simple avec une requête que je ne trouve pas. On a du mal. Visiblement faut bidouiller au taquet...
Crilun crois tu qu'il y ait une requête pour contourner ça?
Merci d'avnce
vendredi 19 mai 2006 à 09:23:55 | Re : Requêtes imbriquées. Erreur

patatedu65

Membre Club
A oui j'ai mal préciser!! L'interface d'ajout des groupes reçoit l'ID d'un cours de langue, donc les groupes ajoutés sont liés seulement au cours choisi....c'était peut être évident non?


BTS Info Indus (2ème année) [:o)]


Cette discussion est classée dans : select, from, where, table2, table1


Répondre à ce message

Sujets en rapport avec ce message

Select lent avec Inner Join et Order [ par vincentstryckmans ] Bonjour,Je souhaite trier une table table1 en fonction d'un champ d'une table2.Ces deux tables ont un champ qui les lient : table1.id_table2 et table2 SELECT + float(5,2) [ par djagger ] Salut !je fais la requete suivante :SELECT * FROM my_tarif WHERE min=15.49ca ne marche pas !!!!!?????par contre :SELECT * FROM my_tarif WHERE min</STR Resultat incompréhensible [ par JALEO WAHRANI ] Bonjour, j'ai une base avec 2 tables: 'perso et client', perso a pour colonnes:id, prop, etatétat vaut 'Y' si on effectue un suivi, sinon (par défaut) Cette sous-requête peut retourner au plus un enregistrement [ par mariam1987 ] Salut à tous, Je débute en SQL et j'ai créé la requête : <p c Optimisation d'une sous-requête SQL [ par Lugdunum2 ] Bonjour, Dans le cadre de l'optimisation des requêtes SQL d'un site web, je me retrouve avec une grande question dont je n'ai pas trouvé de réponse d optimisation de la clause WHERE sur des champs dates [ par ThierH ] Bonjour j'ai une table SQL Server (2005) contenant plus de 50000 lignes. Dans chaque ligne, j'ai des données de type datetime, integer, ... Mon applic Comparer 2 tables par couple de chiffre [ par bod37 ] Salut, J'ai donc un problème de syntaxe sur une requete sql. J'ai 2 tables de données dans une même base qui contiennent chacune des formules de 7 chi Select * from * [ par ziffox ] Bonjour à tous, Je cherche a faire une requête qui parcourt toute la base, et qui m'affiche le nom de la table et du champ qui contient une valeur. pb de requete sur 2 tables [ par ademus ] Bonjour, J'ai 2 tables : table1 avec les champs A1 & B table2 avec les champs A2 & C Sachant que A1 et A2 ont les mêmes valeurs. Je voudrais Utilisation de clause where stockée en DB [ par Badside ] Bonjour, J'aimerais récupérer la somme de plusieurs montants stockés dans une table et sélectionnés sur des critères repris dans une clause where sto


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales