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

 MySQL Discussion :

Requête SQL sur deux tables


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Par défaut Requête SQL sur deux tables
    Bonjour,

    Je débute en SQL et j'aimerai un conseil sur la réalisation d'une requête.
    Je récupère des informations d'un formulaire et voudrait dispatcher ces dernières dans 2 tables différentes.

    Conscient que la norme SQL ne permet pas d'effectuer cette tache dans une même requête et que je dois me tourner vers un trigger j'avoue avoir du mal à arriver à mes fins.

    A partir du formulaire je veux effectuer un enregistrement dans une table [client] et "simultanément" un enregistrement dans une table [devis] mais qui possède le champ clientID, la clé étrangère, pointant le client à qui s'adresse le devis.

    Je ne vois pas comment gérer cette requête, si quelqu'un se sent inspiré je lui en serais reconnaissant

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Par défaut
    Pourrions-nous avoir la structure de tes tables ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Par défaut
    Bonjour,

    Voici la structure des tables [devis] et [clients]:

    ---------------
    Table devis
    ---------------
    | id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
    | date_devis | datetime | NO | | NULL | |
    | clientID | smallint(5) unsigned | NO | | NULL | |
    | prestation | varchar(50) | NO | | NULL | |

    --------------
    Table clients
    ---------------
    | id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
    | nom | varchar(50) | NO | | NULL | |
    | statut | varchar(25) | NO | | NULL | |
    | societe | varchar(50) | NO | | NULL | |

    Etant débutant je ne suis vraiment pas sûr de ma modélisation.
    J'ai contourné mon problème en associant le même id pour les deux tables mais si l'incrémentation d'une de mes 2 requêtes échouent alors c'est la cata

    J'aimerais donc lors de la validation du formulaire créer une nouvelle entrée dans la table [devis] avec comme clé étrangère (clientID) la clé primaire de la table [client] et envoyer également les champs 'nom','statut','societe' .
    Evidemment la clé primaire de [client] ne sera plus incrémenté.

    En vous remerciant par avance.

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Le problème porte plus sur la réalisation de 2 requêtes d'insertion à partir d'un formulaire PHP que sur la réalisation d'un trigger...

    L'idée est la suivante : tu insères le client à partir des valeurs du formulaire concernant le client, puis tu récupères l'ID auto-généré (voir la FAQ sur ce point), puis tu insères le devis.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    Si tu te contentes d'insérer le client puis d'insérer le devis, alors j'ai envie de te dire qu'il n'y aucun intéret à les séparer en deux entités distinctes.

    Si en revanche tu faisais ça :

    Je vérifie si mon client existe et si c'est le cas je récupère son ID sinon je l'insère... puis j'insère mon devis, alors là, il y aurait un intéret.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Par défaut
    Merci pour vos réponses.

    La réponse de ced est parfaite et qui plus est me fait découvrir une faq forte intéressante.

    Si tu te contentes d'insérer le client puis d'insérer le devis, alors j'ai envie de te dire qu'il n'y aucun intéret à les séparer en deux entités distinctes.
    Cela me permet de gérer les clients indépendamment des demandes de devis, surtout si je supprime celles-ci, de plus je n'ai pas de champs assez pertinents pour retrouver un client, le nom du demandeur peut changer pour une même société (le champ société n'est pas obligatoire donc pas possible de ce côté là non plus ).

    J'ai compris ce que tu voulais dire mais ton cas s'applique surtout si mes clients sont récurrents, ce cas de figure sera extrêmement rare, je préfère donc associer un client à une demande de devis.

    Merci à vous.

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

Discussions similaires

  1. [MySQL] Requête SQL sur deux tables & ORDER BY
    Par lokomass dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 18/10/2012, 13h46
  2. requête sql sur deux tables
    Par canacana dans le forum Requêtes
    Réponses: 3
    Dernier message: 02/02/2010, 18h37
  3. [SQL] Problème avec script de pagination et requête sql sur deux tables
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h06
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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