Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: pixyle le le 08-11-2004 a 17:42:22

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.