2010-09-21 9 views
2

Ce que je dois faire est d'obtenir un nom de table dans le résultat d'une requête union avec 4 sélections provenant de tables différentes. Je dois obtenir l'identifiant et le nom de la table pour un traitement ultérieur.Inclure le nom de la table dans la requête SQL

Par exemple j'ai table1, table2, table3 table4 et une requête:

SELECT id from table1,blablabla 
UNION 
SELECT id from table2,blablabla 
UNION 
SELECT id from table3,blablabla 
UNION 
SELECT id from table4,blablabla 

Et je dois le résultat comme:

1, blablabla, table1 
4, blablabla, table4 
7, blablabla, table2 
+0

Pouvez-vous utiliser les étiquettes de code, et nous montrer exactement ce que vous cherchez? – JNK

Répondre

15
SELECT 
    ID, 
    'table1' as TableName 
FROM 
    table1 

UNION 

... 

SELECT 
    ID, 
    'table4' as TableName 
FROM 
    table4 
+1

Merci! Exactement ce dont j'avais besoin. – Alakdae

1

Ajoutez le nom de table dans votre demander

SELECT 
    id, 
    blablabla, 
    'table1' as tableName 
FROM 
    table1 
UNION 
SELECT 
    id, 
    blablabla, 
    'table2' as tableName 
FROM 
    table2 
... 
+0

Merci! Exactement ce dont j'avais besoin mais devnull était le premier donc j'accepte sa réponse. – Alakdae

2
SELECT myid, My otherfield, 'table1' as tablename From table1 
UNION 
SELECT myid, My otherfield, 'mytabl2' From table2 

Considérons un couple d'autres points, si ce sont des tables qui s'excluent mutuellement. UNION ALL Au lieu de cela, ce sera beaucoup plus rapide. En outre, ce type de question arrive souvent lorsque la conception de la base de données est incorrecte, si les mêmes champs sont dans ces tables, pourquoi ne sont-ils pas tous dans une table? Refonte si possible, au moins envisager si vous seriez mieux servi de le faire. Ne sachant pas ce que sont ces tables, je peux faire un evelauate si elles devraient être dans une table, mais généralement c'est une odeur de code.

+0

Merci pour l'information. Au début, il y avait une table, mais les nouvelles données sont dans d'autres catégories et les tables sont maintenant pour différentes catégories et contiennent des données similaires, mais pour des raisons de sécurité, elles doivent être conservées séparément. Seule cette requête accède à plus d'une table et c'est seulement pour la liste. – Alakdae

Questions connexes