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 :

[SQL Server 2K5] Requête INSERT avec deux SELECT


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Avatar de gassisprog
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Points : 86
    Points
    86
    Par défaut [SQL Server 2K5] Requête INSERT avec deux SELECT
    Bonjour,

    J'ai les trois tables suivantes :

    Etudiant :
    • ETD_ID
    • ETD_MATRICULE


    Avec les données suivantes :

    ETD_ID | ETD_MATRICULE
    1 | ETD MAT 01
    2 | ETD MAT 02
    3 | ETD MAT 03

    Enseignant :
    • ENS_ID
    • ENS_MATRICULE


    Avec les données suivantes :
    ENS_ID | ENS_MATRICULE
    1 | ENS MAT 01
    2 | ENS MAT 02

    Je souhaite alimenter la table suivante à partir des deux tables précedentes :

    ENS_ETD :
    • ENS_ID
    • ETD_ID


    Elle doit contenir les données suivantes :

    ENS_ID | ETD_ID
    1 | 1
    1 | 2
    1 | 3
    2 | 1
    2 | 2
    2 | 3

    Pour chaque ID enseignant on doit trouver tous les ID étudiants.

    J'ai la requête INSERT suivante :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO ENS_ETD(ENS_ID, ETD_ID)
     
    SELECT
     
    (SELECT MAX(ENS_ID) FROM Enseignant WHERE ENS_ID NOT IN (SELECT ENS_ID FROM ENS_ETD)),
     
    (SELECT MAX(ETD_ID) FROM Etudiant WHERE ETD_ID NOT IN (SELECT ETD_ID FROM ENS_ETD))

    Cette requête me retourne : Cannot insert the value NULL into column ...

    NB : c'est le cas où le nombre d'énseignants est supérieur au nombre d'élève.

    Merci d'avance pour votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Vous raisonnez en itératif là ou il faut penser en ensembliste.

    La requête finale pour tout insérer est un produit cartésien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO ENS_ETD (ENS_ID, ETD_ID)
    SELECT ENS_ID, ETD_ID
    FROM   Enseignant  CROSS JOIN Etudiant
    Tout simplement !

    A +

  3. #3
    Membre régulier
    Avatar de gassisprog
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Points : 86
    Points
    86
    Par défaut
    Merci bien SQLpro

    Parfois le truc est assez simple mais on aime toujours se compliquer la vie

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    La première chose est d'apprendre le SQL. C'est un VRAI langage (plus de 10000 pages de syntaxe dans la norme SQL) !

    Mon livre comme mon site web peuvent vous y aider...

    A +

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

Discussions similaires

  1. [SQL server 2K5] Ajouter résultats avec join ?
    Par Ticoche dans le forum Développement
    Réponses: 5
    Dernier message: 16/06/2011, 14h54
  2. Requête INSERT avec 2 SELECT sans liaison?
    Par kooky dans le forum SQL
    Réponses: 3
    Dernier message: 21/03/2010, 15h57
  3. [vista,VB 2005,SQL server 2005]requêtes paramétrées avec mysql
    Par olivier57b dans le forum Accès aux données
    Réponses: 4
    Dernier message: 04/09/2008, 18h58
  4. Réponses: 4
    Dernier message: 04/05/2006, 19h01
  5. SQL SERVER 2005 -- requête récursive avec bcp données
    Par evans dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/05/2006, 19h01

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