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 :

Besoin d'aide pour une requête de multilanguisme


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de PoichOU
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par défaut Besoin d'aide pour une requête de multilanguisme
    Bonjour à tous,

    je fais quelques développement sur un site php où il y a un principe de multilanguisme. Je souhaite faire une requête qui pointe sur une table et qui pointe sur une autre table si il n'y a pas de résultat.

    Voici un exemple, j'ai 3 tables :

    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
    23
    24
    25
    -----------------------
    |        ITEM         |
    -----------------------
    | id | id_description |
    -----------------------
    | 1  |      1         |
    | 2  |      2         |
    -----------------------
     
    -----------------------------------------
    | DESCRIPTION_FR_FR                     |
    -----------------------------------------
    | id | description                      |
    -----------------------------------------
    | 1  | voici la description de l'item 1 |
    | 2  | voici la description de l'item 2 |
    -----------------------------------------
     
    -----------------------------------------
    | DESCRIPTION_EN_EN                     |
    -----------------------------------------
    | id | description                      |
    -----------------------------------------
    | 1  | this is the item 1 description   |
    -----------------------------------------
    DESCRIPTION_FR_FR est la table langue par défaut, cad que l'id référencé dans le champ id_description de la table ITEM existe forcément.
    DESCRIPTION_EN_EN est une table langue cad qu'il y a l'équivalent de la DESCRIPTION_FR_FR traduit en anglais, sauf que certaines valeurs peuvent ne pas être dedans (comme dans l'exemple).


    Mon but est d'afficher chaque item en anglais, mais s'il n'existe pas de traduction anglaise alors il faut afficher la traduction française (qui existe forcément). Et dans chaque résultat afficher son origine. Soit obtenir avec l'exemple précédent le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    --------------------------------------------------------
    | id_item | description                      | origine |
    --------------------------------------------------------
    | 1       | this is the item 1 description   | en_en   |
    | 2       | voici la description de l'item 2 | fr_fr   |
    --------------------------------------------------------

    Il existe déjà un système pour faire cela en effectuant plusieurs requêtes (cad faire une boucle sur chaque item, puis pour chaque element faire une requete sur la table en_en et si il n'y a pas de résultat faire une requete sur la table fr_fr).
    Mais on m'a dit que c'était possible de faire cela en une seule requête. Est-ce exact ?




    Merci de votre aide

    PoichOU

    ps : voici le dump de la base si ça peut être utile
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    CREATE TABLE `item` (
      `id` int(11) NOT NULL auto_increment,
      `id_description` int(11) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
     
     
    CREATE TABLE `description_fr_fr` (
      `id` int(11) NOT NULL auto_increment,
      `description` longtext NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
     
    CREATE TABLE `description_en_en` (
      `id` int(11) NOT NULL auto_increment,
      `description` longtext NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
     
    INSERT INTO `description_fr_fr` ( `id` , `description` ) 
    VALUES
    (1 , 'voici la description de l''item 1'),
    (2 , 'voici la description de l''item 2');
     
    INSERT INTO `description_en_en` ( `id` , `description` ) 
    VALUES
    (1 , 'this is the item 1 description');
     
     
    INSERT INTO `item`  ( `id` , `id_description` ) 
    VALUES 
    (1 , 1), 
    (2 , 2);

  2. #2
    Membre éclairé Avatar de PoichOU
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par défaut
    un p'tit up

    si 'ou plait m'sieur ...

  3. #3
    Membre éclairé Avatar de PoichOU
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par défaut


    est-ce impossible ?

  4. #4
    Membre éclairé Avatar de PoichOU
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par défaut
    C'est résolu !

    La requête magique (merci à Hubert Roksor) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT i.id, COALESCE( en.description, fr.description ) AS description
    FROM item AS i
    JOIN description_fr_fr AS fr ON fr.id = i.id_description
    LEFT JOIN description_en_en AS en ON en.id = i.id_description
    A+
    PoichOU

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 23
    Par défaut
    De rien, ça fait plaisir!

  6. #6
    Membre éclairé Avatar de PoichOU
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par défaut
    ehehe même si tu m'avais répondu sur un autre forum, tu mérites d'être cité

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

Discussions similaires

  1. Besoin d'aide pour une requête de MAJ (modif. de car.)
    Par ptitscrat dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 17h27
  2. besoin d'aide pour une requête
    Par lipao17 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/01/2006, 16h55
  3. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 10h33
  4. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56
  5. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38

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