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 :

Simplifier : plusieurs select pour un insert


Sujet :

Langage SQL

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut Simplifier : plusieurs select pour un insert
    Bonjour,

    à l'heure actuelle, je fais 3 requêtes "select" pour faire un "insert" qui utilise des données issues des 3 requêtes précédentes ; il est probablement possible de simplifier ça, mais connaissant mal SQL, je ne sais pas le faire ; donc pourrait-on me le dire ? Voici les 4 requêtes que je fais à l'heure actuelle (ce sont des requêtes préparées) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_patient FROM `patient` where prenom=:id_prenom AND nom=:id_nom AND num_secu=:num_secu
    SELECT id_praticien FROM `praticien` WHERE cat_praticien="médecin"
    SELECT id_consultation_type FROM `consultation_type` WHERE titre_consultation_type="Médecin"
    INSERT into `CONSULTATION` (id_praticien, id_patient,id_consultation_type, date_consultation) VALUES (:id_praticien,:id_patient,:id_consultation_type,:date_consultation)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre averti
    Avatar de taibag
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 214
    Points : 357
    Points
    357
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Si vous avez des relations entre vos tables, vous pouvez faire des jointures pour avoir un seul select.

    Merci.
    मैं एक छात्र हूँ |

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Je pensais effectivement aux jointures, sauf qu'en fait, il n'y a rien de commun entre les 3 tables des select :

    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
    patient
    id_patient : int (8)auto-increment
    nom : varchar (20)
    prenom : varchar (20)
    date_naissance : date
    num_secu : bigint(15)
    
    
    praticien
    	`id_praticien`: mediumint(8) AUTO_INCREMENT,
      
    	`nom_praticien`: varchar(20) 
    	`prenom_praticien`: varchar(20)
    	`cat_praticien`: varchar(20)
    
    consultation_type
      `id_consultation_type` : int (8)auto-increment
      `titre_consultation_type` : varchar(20)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Membre averti
    Avatar de taibag
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 214
    Points : 357
    Points
    357
    Billets dans le blog
    1
    Par défaut
    N'avez-vous pas un problème de conception !!??
    मैं एक छात्र हूँ |

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    En fait, comme je débute en SQL, elle n'est pas de moi et j'en dis plus ici : http://www.developpez.net/forums/d14...ires-medecins/. Si tu t'y connais, peux-tu jeter un œil ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Membre du Club
    Homme Profil pro
    Reverse Engineering
    Inscrit en
    Juin 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Reverse Engineering

    Informations forums :
    Inscription : Juin 2013
    Messages : 31
    Points : 40
    Points
    40
    Par défaut
    Voila la façon de faire sur une seule ligne.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id_patient, id_practicien, id_consultation_type
    FROM patient P,practicien M, consultation_type C
    WHERE prenom=:P.id_prenom AND nom=:P.id_nom AND num_secu=:P.num_secu
    AND M.cat_practicien="médecin"
    AND C.titre_consultation_type="Médecin"

    Par contre des doutes sur le résultat souhaité?


    --------------------------------------------
    Si un commentaire t'as aidé pense à mettre un
    Si un commentaire t'a aidé pense à mettre un

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci de me proposer une requête ; l'idée serait de faire les 3 select en une seule requête, n'est-ce pas ?
    Par contre, je viens d'essayer dans phpMYAdmin en remplaçant les 3 placeholders par des valeurs connues, mais ça me dit "Table 'test2.practicien' doesn't exist" (où "test2" est le nom de la bdd) et pourtant la table "praticien" existe bien. Qu'en pensez-vous ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    La requête fonctionne si je retire toute référence à la table "praticien" :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_patient, id_consultation_type
    FROM patient P, consultation_type C
    WHERE prenom="Y" AND nom="P" AND num_secu="0"
    AND C.titre_consultation_type="Médecin"
    Sachant que cette table "praticien" existe bien, où est le bug ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    Membre du Club
    Homme Profil pro
    Reverse Engineering
    Inscrit en
    Juin 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Reverse Engineering

    Informations forums :
    Inscription : Juin 2013
    Messages : 31
    Points : 40
    Points
    40
    Par défaut
    Merci de me proposer une requête ; l'idée serait de faire les 3 select en une seule requête, n'est-ce pas ?
    Par contre, je viens d'essayer dans phpMYAdmin en remplaçant les 3 placeholders par des valeurs connues, mais ça me dit "Table 'test2.practicien' doesn't exist" (où "test2" est le nom de la bdd) et pourtant la table "praticien" existe bien. Qu'en pensez-vous ?
    oui exact on sélectionne avec un seul SELECT 3 tables différentes.

    c'est normal car 'test2.practicien' veut dire la table test2.praticien et non pas la table praticien dans la base test2

    Ecrit le comme cela et ça devrait aller

    Citation Envoyé par laurentSc Voir le message
    La requête fonctionne si je retire toute référence à la table "praticien" :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_patient, id_consultation_type
    FROM patient P, consultation_type C
    WHERE prenom="Y" AND nom="P" AND num_secu="0"
    AND C.titre_consultation_type="Médecin"
    Sachant que cette table "praticien" existe bien, où est le bug ?
    Si c'est un copier/coller de la requête que j'ai posté c'est normal j'ai écrit parcticien

    --------------------------------------------
    Si un commentaire t'as aidé pense à mettre un
    Si un commentaire t'a aidé pense à mettre un

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Quand j'ai fait un copier-coller du code, tu l'avais probablement déjà corrigé (et je pense que sinon, j'aurais remarqué l'erreur). En tout cas, maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id_patient, id_practicien, id_consultation_type
    FROM patient P, consultation_type C,test2.`practicien` M
    WHERE prenom="Y" AND nom="P" AND num_secu="0"
    AND M.cat_practicien="médecin"
    AND C.titre_consultation_type="Médecin"
    il ne connaît toujours pas la table...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Comme ça veut pas, je suis revenu en arrière...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  12. #12
    Membre du Club
    Homme Profil pro
    Reverse Engineering
    Inscrit en
    Juin 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Reverse Engineering

    Informations forums :
    Inscription : Juin 2013
    Messages : 31
    Points : 40
    Points
    40
    Par défaut
    Non mais désolé d'insister mais c'est praticien pas practicien hein???
    Si un commentaire t'a aidé pense à mettre un

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci d'avoir insisté car je cherchais parcticien et voyais que ce n'était pas ça, mais j'avais pas vu que tu avais fait une faute de frappe et que j'avais bien un C en trop ; donc, maintenant, c'est bon.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Plusieurs select dans un INSERT
    Par micom59 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 28/07/2010, 14h47
  2. Réponses: 2
    Dernier message: 02/07/2008, 02h26
  3. Récuperation du max avec 2 select pour un insert
    Par Kiroukool dans le forum SQL
    Réponses: 5
    Dernier message: 02/08/2007, 09h31
  4. Réponses: 3
    Dernier message: 06/04/2007, 10h09
  5. [ODBC] plusieurs redirections pour l'insertion
    Par maraly dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/03/2007, 15h51

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