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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    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 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    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 éclairé
    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
    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