Titre: jointures et nom de champs identiques
Posté par: pixyle le le 08-11-2004 a 17:42:22
Salut,
Je reprend un site déjà presque fini (je précise hein parceque moi je fais pas ce genre de choses ... ) et je tombe sur un os : 2 champs du même nom dans 2 tables ... quans je les croise forcement j'ai pas la bonne chose qui s'affiche.
Savez vous si on peut renommer un champ à la manière des alias pour le nom des tables, ou une idée pour contourner ce problème ? |
Titre: Re:jointures et nom de champs identiques
Posté par: erwinol le le 09-11-2004 a 18:09:11
Ben il suffit d'utiliser nomTable.nomChamp dans tes requetes.
Par exemple
Code:
... FROM tb1, tb2 WHERE tb1.champ = tb2.champ
|
|
Oubien tu fais comme je fais toujours :
Code:
... FROM tb1 T, tb2 S WHERE T.champ = S.champ
|
|
Quand je construit une base de données, les champs sur lesquels je dois faire des jointures portent toujours les mêmes noms et ça ne m'a jamais posé aucun problème |
Titre: Re:jointures et nom de champs identiques
Posté par: MarvinLeRouge le le 10-11-2004 a 23:16:59
Salut,
Tu peux aussi renommer les champs avec des alias comme pour les tables. Exemple :
Code:
select cat.nom as categorie, scat.nom as sousCategorie from tablecategorie cat inner join tablesouscategorie scat on cat.idCategorie = scat.idCategorie order by categorie, sousCategorie
|
|
Tu remarqueras que dans cet exemple, les tables ont des alias, les champs aussi et que les 2 tables ont des champs de même nom. |
Titre: Re:jointures et nom de champs identiques
Posté par: pixyle le le 16-11-2004 a 14:49:21
Merci je vais étudier ça car j'ai trouvé une astuce mais qui ne règlera pas tout à chaque fois ... Pour le tri des données pas de soucis c'est pour l'affichage, si je dois afficher les contenus des 2 champs nommés type, issus de la même requête.
J'ai bidouillé ... Mettons les tables table1 et table2 avec chacune un champ nommé type. La requête d'origine était du type : [color=Green]$sql ="SELECT * FROM table1 AS A, table2 AS B, ... WHERE A.type='$toto' AND .... ";[/color] contruite par concaténation en fonction des champs remplis (donc chaud de faire des alias sur les noms de champs) [color=Green]$req = mysql_query($sql); $list = mysql_fetch_array($req); $list[type][/color] affiche le type de la table2 $sql ="SELECT * FROM table2 AS B, table1 AS A,... (..) affiche le type de la table1
.. ou l'inverse j'ai pas le code sous les yeux ^_^
|
Titre: Re:jointures et nom de champs identiques
Posté par: MarvinLeRouge le le 17-11-2004 a 09:48:46
Salut,
Tu pourrais par exemple concaténer le nom de la table et celui du champ, pour tous les champs utilisés. Ainsi pas de pb d'identification.
Code:
$query = "SELECT $col1 AS table1_$col1, ... FROM table1"
|
|
Ca me paraît viable, mais j'ai pas testé ;D |
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|