8796 sujets

Développement web côté serveur, CMS

Hello,

Je suis en pleine création d'un moteur de recherche et j'aimerais savoir s'il est possible de savoir de quelle table vient le résultat d'une requête (lors d'une requête faite sur plusieurs tables en même temps).

J'ai bien sûr l'idée d'indiquer dans chaque table de quel type de résultat il s'agit mais non seulement cela va alourdir inutilement mes tables mais je trouve pas ça très "élégant".

Quelqu'un a une idée ?

Un exemple de requête SQL (qui comprendra non pas 2 mais environ 8 tables au final) :
SELECT nom, query_nom, desc_main_fr FROM hotels UNION SELECT nom, query_nom, desc_main_fr FROM restaurants WHERE desc_main_fr LIKE ? OR nom LIKE ?

Modifié par Skoua (16 Jan 2010 - 19:04)
'lut,

ben tu pourrais faire
SELECT 'hotels' as nom_table, nom, query_nom, desc_main_fr FROM hotels WHERE desc_main_fr LIKE ? OR nom LIKE ? UNION ALL 
SELECT 'restaurants' as nom_table, nom, query_nom, desc_main_fr FROM restaurants WHERE desc_main_fr LIKE ? OR nom LIKE ?

Par contre quand je vois que n tables ont les mêmes noms de champs et qu'on fait une requête UNION sur toutes ces tables... ben ça ressemble drôlement à une erreur de normalisation et je me dis qu'en fait il suffisait d'une seule table avec les mêmes champ + 1 qui spécifierait une catégorie (1='hotels', 2='restaurants', etc...) Smiley cligne
Modifié par Heyoan (15 Jan 2010 - 02:40)
Hum merci pour ta réponse je vais tester ça.

J'avais déjà pensé à ce que tu m'as proposé mais les tables n'ont pas vraiment les mêmes champs, certains ont plus ou moins de données que d'autres mais ces trois champs sont toujours là en effet.

Je vais tout de même penser à regarder si une optimisation n'est pas possible, en tout cas merci pour ta réponse. Smiley smile
Modifié par Skoua (15 Jan 2010 - 10:56)
Skoua a écrit :
Merci ça fonctionne très bien, je ne connaissais pas "as". Smiley sweatdrop
Il se trouve que ce mot-clé est facultatif. Smiley cligne

SELECT machin AS bidule FROM ...
revient à
SELECT machin bidule FROM ...

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne