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 ?
« Dernière Édition: le 08-11-2004 a 17:43:24 par pixyle »
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
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.
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 : $sql ="SELECT * FROM table1 AS A, table2 AS B, ... WHERE A.type='$toto' AND .... "; contruite par concaténation en fonction des champs remplis (donc chaud de faire des alias sur les noms de champs) $req = mysql_query($sql); $list = mysql_fetch_array($req); $list[type] affiche le type de la table2 $sql ="SELECT * FROM table2 AS B, table1 AS A,... (..) $list[type] affiche le type de la table1
.. ou l'inverse j'ai pas le code sous les yeux ^_^