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 :

Question d'optimisation: Faire un Select avec une clef primaire sur plusieurs colonnes


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Question d'optimisation: Faire un Select avec une clef primaire sur plusieurs colonnes
    Bonjour tout le monde.

    Je cherche à savoir si il est possible de faire un Select avec une clef primaire sur plusieurs colonnes

    C'est a dire:


    Voici une table d'exemple fictive:
    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
    CREATE TABLE IF NOT EXISTS `MaTable` (
      `Id_Societe` int(9) unsigned NOT NULL,
      `Id_Type` varchar(40) collate utf8_unicode_ci NOT NULL,
      `Id_Photo` int(9) unsigned NOT NULL  ,
      `Id_PhotosAlbum` int(9) unsigned NOT NULL,
      `Id_SizeMode` varchar(40) collate utf8_unicode_ci NOT NULL,
     
      `NomFichier` varchar(255) collate utf8_unicode_ci NOT NULL,
      `PoidsOct` int(8) unsigned default NULL,
      `Width` int(4) unsigned default NULL,
      `Height` int(4) unsigned default NULL,
      `DateMake` timestamp NOT NULL default '0000-00-00 00:00:00',
      `DateModif` timestamp NOT NULL default '0000-00-00 00:00:00',
     
      PRIMARY KEY  (`Id_Societe`,`Id_Type`, `Id_Photo`,`Id_PhotosAlbum`, `Id_SizeMode`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci  ;
    Admettons que je souhaite récupérer les informations d'une ligne dont j'ai la clef primaire

    D’habitude je procède ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `MaTable` WHERE `Id_Societe` = 'MaValeur1' AND  `Id_Type`  = 'MaValeur2' AND  `Id_Photo`  = 'MaValeur3' AND  `Id_PhotosAlbum` = 'MaValeur4' AND  `Id_SizeMode`  = 'MaValeur5';
    Cette requette me retourne une seule ligne et c'est normal, de plus c'est ce que je cherche à faire...

    Ce que j'aimerais savoir c'est si il est possible de travailler directement sur la clef primaire

    Voici un exemple:
    Cet exemple et faux je le sais bien mais je cherche un equivalent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `MaTable` WHERE  PRIMARY KEY = ( 'MaValeur1','MaValeur2','MaValeur3','MaValeur4','MaValeur5') ;
    Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `MaTable` WHERE  PRIMARY KEY = 'Une forme normalisé de la cléf' ;

  2. #2
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Si "le sous entendu est" puis je faire un Select "simplifié" sans avoir à renseigner les "n" colonnes de ma clef primaire alors la réponse est non

    Vous pouvez cependant (je ne sais pas si cela est vrai sous MySQL) faire ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTable WHERE (Id_Societe,Id_Type,Id_Photo,Id_PhotosAlbum,id_SizeMode) = ( 'MaValeur1','MaValeur2','MaValeur3','MaValeur4','MaValeur5')

  3. #3
    Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup Argoet, cette question restait en suspend et me tiraillé l'esprit de peur de passer à coté de quelque chose d'important.

    merci aussi pour ta solution d'écriture plus propre

    je passe le post en résolu

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

Discussions similaires

  1. [MariaDB] Clé étrangère avec une clé primaire sur plusieurs colonnes
    Par Steph258 dans le forum Administration
    Réponses: 2
    Dernier message: 03/03/2014, 09h19
  2. JPA + Hibernate : faire un select avec une null value
    Par bubulemaster dans le forum Persistance des données
    Réponses: 2
    Dernier message: 17/06/2010, 10h24
  3. Faire un select avec une exclusion d'une autre table
    Par polemoss dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/12/2006, 10h10
  4. Faire un update avec une ss requete renvoyant plusieur row
    Par djodjo dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/09/2005, 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