IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

sous requete !


Sujet :

Langage SQL

  1. #1
    Membre actif
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Points : 236
    Points
    236
    Par défaut sous requete !
    Bonsoir,

    Pendant que je cherche je voudrais vos conseils svp...

    Alors voilà, je cherche à imbriquer une requête dans une autre :
    Voilà ma sous requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select utilisateur.nom 
    from utilisateur 
    where utilisateur.id_fournisseur = ".$_SESSION['id_fournisseur']. "
    Celle ci marche, elle ramène les résultats escomptés.
    Mais quand j'imbrique cette dernière à la principale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    update utilisateur set actif = 0 
    where (utilisateur.nom = 
    (select utilisateur.nom 
    from utilisateur 
    where (utilisateur.id_fournisseur = ".$_SESSION['id_fournisseur']. ")))
    Cela me fait une erreur

    Requete : update utilisateur set actif = 0 where (utilisateur.nom = (select utilisateur.nom from utilisateur where (utilisateur.id_fournisseur = 14 )))
    * Erreur : 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 utilisateur.nom from utilisateur where (utilisateur.id_f
    je ne sais pas encore ou se situe l'erreur, si vous pouviez me donnez des conseils, je serais preneur....

    p.s. : le sql_requete ne contient aucune erreur

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 436
    Points
    28 436
    Par défaut
    Es-tu sur d'avoir un seul utilisateur pour le fournisseur mentionné ?
    Tu peux aussi avoir des problèmes d'alias...
    Essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE utilisateur SET actif = 0 
    WHERE utilisateur.nom IN
    (SELECT utl.nom 
    FROM utilisateur utl
    WHERE utl.id_fournisseur = ".$_SESSION['id_fournisseur']. ")

  3. #3
    Membre actif
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Points : 236
    Points
    236
    Par défaut
    SALUT,

    Es-tu sur d'avoir un seul utilisateur pour le fournisseur mentionné ?
    Si c'est pour la 1e requête, c'est-à-dire la sous requête alors elle me rapporte plusieurs résultats :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $req = "select utilisateur.nom from utilisateur where utilisateur.id_fournisseur = ".$_SESSION['id_fournisseur']. " ";
    		$res_req = sql_requete($req);
     
     
    		// pour rammener les <> resultats a l'interieur d'une boucle foreach
    		$num = 0;
    		foreach ($res_req as $cpt => $users)
    		{
    			echo($users['nom']) ;
    			$num ++;
     
    		}
    c-a-d "a,b,c,d" par exemple

    a+

  4. #4
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Ha donc si ca te rapporte plusieurs occurrences ce n'est pas un = qu'il faut utiliser mais plutôt un IN :

    Comme al1_24 te l'a proposé

  5. #5
    Membre actif
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Points : 236
    Points
    236
    Par défaut
    ok, c'est bon en fait c'est la version de MySQL avec laquelle je travaille (4....) qui n'accepte pas les sous requêtes donc il faut faire attention à la version .

    Donc j'ai trouvé un autre moyen de faire dans mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    	//cette boucle est très contextuelle ; ramène les id des cases cochés avec $liste
    foreach($_POST['chk'] as $num => $chk)
    		{
    			if ($chk == 'on')
    			{
    				//$liste .= ', '.$num.' ';
    				//echo("yyyaaaaaaaaahhhhhhh".$liste);
    				$liste = $num ;
    			}
    		}     
            //puis
     
    //requete pour changer la valeur actif du contact coche a zero
    		$req_contact_coche_actif_0 =" update utilisateur set utilisateur.actif = 0".
    									" where (utilisateur.id_utilisateur = ". $liste." )";
     
    		//execution de la requete
    		$res_req_contact_coche_actif_0 = sql_requete($req_contact_coche_actif_0);
    voila donc regarder la version de MYSQL avant de faire des sous requêtes

    a+

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Citation Envoyé par clio671 Voir le message
    ok, c'est bon en fait c'est la version de MySQL avec laquelle je travaille (4....) qui n'accepte pas les sous requêtes donc il faut faire attention à la version .
    Ah oui en gros vous voullez dire qu'il faut avoir lu les règles avant de poster : http://www.developpez.net/forums/a69...gage-sql-lire/


  7. #7
    Membre actif
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Points : 236
    Points
    236
    Par défaut
    bah ...la notion de version me parlait pas encore dsl


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL 4] Sous Requete IN .. SELECT ...
    Par pataluc dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/09/2004, 15h54
  2. Problème sous requete MySQL
    Par gavelin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2004, 10h36
  3. [Débutante]Sous requete
    Par mimi74 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/07/2004, 14h02
  4. probleme de sous requete
    Par JD_Lyon dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/04/2004, 22h18
  5. Requete avec une sous-requete... Ne fonctionne qu'a moitie..
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 18/08/2003, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo