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 :

Problème requête INSERT INTO


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Problème requête INSERT INTO
    Bonjour,

    Je vous contact car j'ai un soucis avec ma requête INSERT INTO, Je voudrais insérer pour chaque ID de ma requête SELECT un nouvel enregistrement dans la table "playlist_memberships"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO playlist_memberships (playlist_id,song_id)  VALUES ('1',  'SELECT id FROM songs WHERE source_path LIKE '%Tribecore%'');
    MA requete SELECT fonctionne correctement, seulement avec le insert cela ne fonctionne pas , une idée pour l'améliorer ?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    J'imagine que "seulement avec le insert cela ne fonctionne pas " signifie que les données insérées ne sont pas les bonnes...
    Il faut revoir la construction de la requête, car ici tu tentes de mettre la chaine 'SELECT id FROM songs WHERE source_path LIKE '%Tribecore%' dans la colonne song_id.
    Ici il faut enlever la clause value, et utiliser une requête SELECT:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insert into Table1(Col1,Col2)
    select 'X',Col4 from Table2 where ...

    Attention à la gestion des doublons...

    Tatayo.

  3. #3
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id FROM songs WHERE source_path LIKE '%Tribecore%'')ct
    Dans ta requête SELECT , ne manque t-il pas le champ idPlaylist ?

    En effet, ta table playlist_memberships s'attend à recevoir deux informations que sont playlist_id et song_id.

    Edit : tatayo a répondu au moment ou je rédigeais.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    milkoseck et tatayo, la requête fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO playlist_memberships (song_id) 
     
    select id from `songs` where `source_path` like "%Tribecore%"
    Cependant si j'essaye d'ajouter "playlist_id" cela me retourne une erreure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO playlist_memberships (playlist_id, song_id)
    select id from `playlists`WHERE id = 1
    select id from `songs` where `source_path` like "%Tribecore%" ;

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    La liste des colonnes renvoyée par la clause SELECT doit être compatible avec les colonnes indiquées dans la clause INSERT INTO.

    Je te suggère de commencer par construire la partie SELECT avant de tenter l'insertion de données dans la table.

    Tatayo.

  6. #6
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    Ta table playlist_memberships a combien de colonnes ID ?
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    milkoseck Ma table playlist_memberships contient :
    id
    playlist_id
    song_id

    tatayo , le résultat de mes requêtes SELECT retournent bien des données compatible avec le champ dans lequel j'insert la donnée

  8. #8
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    Tu peux essayer ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO playlist_memberships (playlist_id, song_id)
    SELECT p.id, s.id from playlists p, sons s
    WHERE p.id=1 and s.source_path like "%Tribecore%";
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    milkoseck ca fonctionne parfaitement

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Et non ! *
    Ta requête d'insertion attend combien de valeurs ? 2
    Chacune de tes requête de sélection renvoient combien de colonnes ? 1

    Une autre façon de voir le problème est de considérer que la partie SELECT construit une table résultat, et que cette table dans sa structure (nombre de colonnes, type...) doit être compatible avec ce qu'attend la "table" décrite par le INSERT INTO.
    Ici ce n'est clairement pas le cas.

    Tatayo.

    *: je répondais bien sûr au message de 16:53...

  11. #11
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par pledger Voir le message
    milkoseck Ma table playlist_memberships contient :
    id
    playlist_id
    song_id
    @ tatayo : j'ai supposé que le champ id de la table playlist_memberships est en incrémentation automatique.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    tatayo pour cette information , je n'avais pas réfléchis à cette manière pour construire ma reqûete

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Le filtre WHERE p.id=1 and s.source_path like "%Tribecore%"; peut rapporter 0 à n valeurs, d'où résultat aléatoire

    C'est très dangereux de mettre des wildcard dans un critère de filtrage en vue d'insertion

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    C'est en gros ce que je disais plus tôt:

    Citation Envoyé par tatayo Voir le message

    Attention à la gestion des doublons...
    Tatayo.

  15. #15
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par tatayo Voir le message
    C'est en gros ce que je disais plus tôt:
    Tatayo.
    Les doublons ne sont que l'un des cas possibles
    - si le select WHERE p.id=1 and s.source_path like "%Tribecore%" ne correspond à aucune occurrence, rien à insérer (il manque une valeur)
    - si ce même select renvoie plusieurs valeurs distinctes, toujours pas de doublon, mais il y a une valeur en trop pour l'insert
    - enfin, si ce select renvoie plusieurs valeurs identiques, alors oui il y a doublon (SQLCODE -803)

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    J'ajouterai que je ne vois pas l'intérêt de la table PlayList dans la clause SELECT, car il n'y a aucune jointure avec la table Song, et qu'ici l'Id renvoyé vaut toujours 1.
    Si Id est bien un id unique dans cette table, autant la supprimer et mettre directement 1 dans la clause Select !

    Tatayo.

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

Discussions similaires

  1. Problème requête INSERT INTO
    Par dutycorpse dans le forum Général Java
    Réponses: 3
    Dernier message: 10/11/2011, 20h08
  2. Problème requête Insert into
    Par nonopower dans le forum VBA Access
    Réponses: 0
    Dernier message: 02/05/2010, 20h51
  3. Problème de requête insert into (syntaxe)
    Par Bizoo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/09/2008, 17h23
  4. Problème de requête INSERT INTO
    Par coco38 dans le forum Oracle
    Réponses: 9
    Dernier message: 27/03/2008, 15h35
  5. Procédure Form_Open,problème de requête Insert into
    Par Averroes dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/08/2007, 21h49

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