Bonjour,
Non ma question ne porte pas sur un simple inner join, mais c'est plus complexe que ça. Le truc, c'est que dans google, je ne sais pas trop quoi chercher, ni ici d'ailleurs.
SELECT AO.NumArticle, AO.NumOption, O.NomTableOption, O.NumIDTableOption
FROM Article_Option AO INNER JOIN
[Option] O ON O.NumOption = AO.NumOption INNER JOIN
[O.NomTableOption] OPT ON O.NumIDTableOption = OPT.ID
ORDER BY AO.NumArticle, O.NomTableOption
En fait j'ai le nom d'une table qui est un champ d'une table, et je voudrais faire une jointure.
Dans la requete du dessus, le nom de ma table serait contenu dans O.NomTableOption...
En gros, j'ai des articles, une liste d'options, et certains articles n'ont droit qu'à certaines options.
Donc mes options j'en ai fait des tables du type OPTION_NomOption qui contient deux champs dedans, ID et Libelle
La table Option (tout court cette fois) contient la liste de toutes les options du site disponible de la forme :
NumOption NomTableOption NumIDTableOption
1 OPTION_Couleur 1
etc
sachant que dans OPTION_Couleur j'ai
ID Libelle
1 Noir et blanc
2 Couleur
Et ma table Article_Option qui donne à mes articles les options auquelles ils ont droit
NumArticle NumOption
1 1
1 2
1 37
2 1
2 21
etc
Voilà, La requete que j'ai postée en premier me permettrait d'afficher, par article, l'ensemble des options disponibles.
Le truc c'est que le nom de la table d'option, c'est un champ....
J'ai essayé des caractères spéciaux pour faire comprendre à SQL server qu'il fallait qu'il me transforme le champ en nom de table, mais j'ai rien trouvé.
Si quelqu'un à déjà eu le cas, ça m'arrangerait, ça m'éviterait d'avoir à faire plusieurs requêtes pour arriver au résultat, et de passer par le code.
Voilà, merci d'avance
Message édité par backdafuckup le 20-03-2008 à 11:17:47