problème de jointure

problème de jointure - PHP - Programmation

Marsh Posté le 27-05-2006 à 18:03:15    

Bonjour,
j'ai un problème jointure depuis quelques temps que je n'arrive pas à résoudre:
Voila les deux tables(ps: j'ai simplifié)
CREATE TABLE `utilisateur` (
`id` int(9) NOT NULL auto_increment,
`choix1` varchar(30) NOT NULL default '',
`choix2` varchar(30) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
 
 
 
INSERT INTO `utilisateur` VALUES (1, '1', '3');
INSERT INTO `utilisateur` VALUES (2, '2', '4');
 
 
 
 
CREATE TABLE `traduction` (
`1` varchar(30) NOT NULL default '',
`2` varchar(30) NOT NULL default '',
`3` varchar(30) NOT NULL default '',
`4` varchar(30) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
 
INSERT INTO `traduction` VALUES ('livre', 'stylo', 'revue', 'dvd');
 
donc je voudrais comme résultat:par exemple pour l‘utilisateur ‘1’ que dans ses infos le résultat qui s’affiche soit :livre et revue
et que pour l‘utilisateur ‘2’ que dans ses infos le résultat qui s’affiche soit :stylo et dvd.
Donc est-ce qu‘il y aurait une personne qui puisse m'aider à faire la jointure car je galère
Ps:mon site est un site multilangues et j'ai donc choissi cette solution.
merci

Reply

Marsh Posté le 27-05-2006 à 18:03:15   

Reply

Marsh Posté le 27-05-2006 à 18:50:29    

ok. grosso modo, c'est mal foutu...
 
Essaye d'abord de rechercher sur le forum, il y a des topics qui parlent de problèmes de traductions, avec des solutions efficaces.
 
Pour la table traduction, habituellement, les messages sont numérotés (par ex num -> fr: 1 -> stylo, 2 -> dvd), ou nommés (par ex nom -> trad.en: stylo -> pen, dvd -> dvd), donc dans trois colonnes:

  • langue
  • nom_message
  • traduction

Avec des indexs sur nom_message, et langue.
 
Si tu garde des messages numérotés, pour la table utilisateur, puisque choix1 & choix2 vont contenir des nombres, utilise un type <<int>> au lien de varchar, ce sera plus efficace, et plus clair.
 
Remarque générale, concernant la table traduction: si tu as des champs numérotés dans une table, comme `1`, `2`, etc... alors la table est très certainement mal conçue. Ces numéros devraient se retrouver dans la valeur d'un champs et non dans le nom du champs.
 
Remarque générale, jointure:
Pour faire une jointure, tu doit avoir à un moment donné, un select sur deux tables, et une condition de jointure. Cette condition de jointure détermine quels sont les champs de chacune des tables qui doivent être égaux (champs-clés), pour former une ligne d'une nouvelle table (vue de jointure) contenant tout ou partie des champs des deux tables originales.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed