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 :

[UPDATE]Sous-requetes avec plusieurs nuplets


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut [UPDATE]Sous-requetes avec plusieurs nuplets
    bonjour à tous ou plutot bonsoir

    Je desire faire un update par rapport à un champ id (identifiant).
    Mais cela devra changer plusieurs lignes.
    En fait, je recupere par une sous requete plusieurs id a modifier comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $INSERT.= "UPDATE news ".
                        "SET id_newsletter = ".$this->idNewsletter." ".
                        "WHERE id_news = (SELECT DISTINCT (n.id_news) ".
                                            "FROM news n ".
                                                "INNER JOIN news_include ni ".
                                                    "ON ni.id_news = n.id_news ".
                                                "INNER JOIN site_include si ".
                                                    "ON si.id_news = n.id_news ".
                                            "WHERE si.id_site = ".$this->idSite." ".
                                            "AND ni.abreviation = '".$this->abreviation."' ".
                                            "AND n.id_type = ".$this->idType." ".
                                            "AND n.id_newsletter = 0); ";
    Mais ca plante et je ne vois aps comment faire. Voici le message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR: more than one row returned by a subquery used as an expression
    Merci a tous pour l'aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    C'est votre id_news qui n'est visiblement pas unique. Vous utilisez quel SGBDR ?
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    En fait, oui, je dois faire un update sur beaucoup de champs.
    Mais le WHERE retourne plusieurs valeurs

    Du coup, j'ai fait ceci et cela marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    "UPDATE news  ".
                        "SET id_newsletter = ".$this->idNewsletter." ".
                        "FROM news n, news_include ni, site_include si ".
                                            "WHERE ni.id_news = n.id_news ".
                                            "AND si.id_news = n.id_news ".
                                            "AND si.id_site = ".$this->idSite." ".
                                            "AND ni.abreviation = '".$this->abreviation."' ".
                                            "AND n.id_type = ".$this->idType." ".
                                            "AND n.id_newsletter = 0; ";
    Par contre, je ne sais pas si c'est le plus propre et efficace.

    Merci en tout cas pour votre aide rapide, ca fait plaisir.
    Je travaille sous postgres avec PHP5.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/07/2009, 16h01
  2. requete avec plusieurs instructions
    Par Ama dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 31/08/2006, 08h11
  3. Sous requetes retourne plusieurs variables
    Par poosh dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 25/08/2006, 09h51
  4. Réponses: 4
    Dernier message: 29/06/2006, 10h11
  5. requete avec plusieurs tableaux
    Par isa21493 dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/03/2006, 15h19

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