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

Requêtes MySQL Discussion :

[heritage] quelle syntaxe pour les requêtes avec Mysql


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut [heritage] quelle syntaxe pour les requêtes avec Mysql
    Bonjour,

    Voilà je teste la notion d'héritage sous mysql (dans un contexte php).
    Voila un exemple très simple. J'ai 2 tables 'personne' et 'prospect'.
    la table prospect est un sous type de personne. Les deux tables partagent donc la même clé primaire 'id_pers' qui est auto incrémentée.

    Question 1 - comment insérer un nouveau prospect en une ligne de commande ?
    (ex : je veux insérer Michel BRES menuisier)
    Pour le moment, je ne vois qu'une solution.
    J'insère d'abord michel BRES dans la table personne.
    Je récupère l'id_pers créé et ensuite j'insère menuisier dans la table prospect.
    via un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO `prospect` ( `id_pers` , `metier` )
    VALUES ( id_récupéré, 'menuisier' ) ;
    Je trouve cela un peu lourd à gérer. Peut-on faire plus simple sachant que la version de mysql que j'utilise ne gère pas l'héritage.

    Question 2- comment modifier tous les attributs d'un prospect en une ligne de commande ?

    Ci-dessous le code sql pour créer ces tables.

    Table personne
    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
     
    CREATE TABLE `personne` (
      `id_pers` int(11) NOT NULL auto_increment,
      `nom` varchar(100) NOT NULL default '',
      `prenom` varchar(20) NOT NULL default '',
      PRIMARY KEY  (`id_pers`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
     
    -- 
    -- Contenu de la table `personne`
    -- 
     
    INSERT INTO `personne` (`id_pers`, `nom`, `prenom`) VALUES (1, 'Marrec', 'jean'),
    (2, 'dupond', ''),
    (3, 'durand', 'Paul');
    table prospect
    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
    20
    21
    22
     
    CREATE TABLE `prospect` (
      `id_pers` int(11) NOT NULL auto_increment,
      `metier` varchar(100) NOT NULL default '',
      PRIMARY KEY  (`id_pers`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
     
    -- 
    -- Contenu de la table `prospect`
    -- 
     
    INSERT INTO `prospect` (`id_pers`, `metier`) VALUES (1, 'joueur');
     
    -- 
    -- Contraintes pour les tables exportées
    -- 
     
    -- 
    -- Contraintes pour la table `prospect`
    -- 
    ALTER TABLE `prospect`
      ADD CONSTRAINT `FK_personne_prospect` FOREIGN KEY (`id_pers`) REFERENCES `personne` (`id_pers`) ON DELETE CASCADE ON UPDATE CASCADE;
    Par avance merci

  2. #2
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par tavarlindar Voir le message
    Question 1 - comment insérer un nouveau prospect en une ligne de commande ?
    In n'as pas le choix tu est obligé a ma conaissance de faire deux insert.
    Tu peut faire une procédure stocké qui effectuera ces insert afin de rendre plus transparent l'héritage.
    Citation Envoyé par tavarlindar Voir le message
    Question 2- comment modifier tous les attributs d'un prospect en une ligne de commande ?
    Tu peut faire des jointures sur les UPDATE.

  3. #3
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    j'utilise mysql 4 ....

    mauvaise nouvelle, donc il n'existerait pas d'autres moyen que de faire 2 insert ...

  4. #4
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 191
    Billets dans le blog
    16
    Par défaut
    Personnellement j'utilise des triggers dans ce genre d'exercice, tant pour les INSERT que pour les UPDATE, mais vous allez sans doute me dire qu'avec MySQL 4 les triggers n'existent pas ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  5. #5
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Personnellement j'utilise des triggers dans ce genre d'exercice, tant pour les INSERT que pour les UPDATE, mais vous allez sans doute me dire qu'avec MySQL 4 les triggers n'existent pas ?
    En effet

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    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 997
    Billets dans le blog
    6
    Par défaut
    Moi j'utilise des procédures stockée de mapping relationel objet.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    procédures stockée de mapping relationel objet ?
    ça mord cette bête la ?

    Ok je fais google ...

    Pour conclure : quand on utilise mysql 4 on est dans la M....

    En deux mots c'est cela non ?

  8. #8
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par SQLpro
    Moi j'utilise des procédures stockée de mapping relationel objet.
    Si je ne m'abuse cela concerne uniquement un code applicatif structuré grâce a de la POO. Cela sert a synchroniser l'état des instances avec la base de donnée afin d'avoir une persistance efficace et transparente des instances.
    Pour se faire on utilise beaucoup de SQL procédural afin d'alléger le code applicatif gérant la base de donnée pour ce concentrer sur l'application même.
    C'est ici je ne pense pas le problème mais c'est toujours sympa d'avoir l'occasion de parler de ce genre de pratique très utile.
    Citation Envoyé par tavarlindar Voir le message
    En deux mots c'est cela non ?
    En deux mots : deux requêtes

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2010, 09h37
  2. Réponses: 6
    Dernier message: 30/01/2008, 22h20
  3. [ASA] Quelle extention pour les fichiers de données?
    Par Goldorak2 dans le forum SQL Anywhere
    Réponses: 2
    Dernier message: 07/12/2005, 09h28
  4. Réponses: 1
    Dernier message: 30/11/2005, 14h57

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