2010-11-20 6 views
2

J'essaye d'écraser plusieurs tables en une seule requête et de la trier par une date.mySQL union Renvoyer le nom de la table

Cependant, je veux aussi une colonne qui définit de quelle table provient l'information - de cette façon, je peux utiliser PHP pour décider quoi faire avec les données.

C'est ce que j'ai jusqu'à présent

SELECT DATABASE() as source, title AS MAIN, id as ID, date 
    FROM collection WHERE userID = '1234' 
    UNION 
    SELECT DATABASE() as source, body, id, date 
    FROM blog WHERE posterID = '1234' 
    ORDER BY date DESC 

Ce qui fonctionne bien et les commandes à la date, mais la « source » colonne renvoie uniquement la base de données « myusername.dabtabaseName »

Y at-il de toute façon mySQL peut renvoyer le nom TABLE dont il provient? J'ai regardé autour du manuel mais je n'ai rien trouvé.

Merci.

Répondre

6

Pourquoi pas simplement?

SELECT DATABASE() as source, 'Collection' as TblName,title AS MAIN, id as ID, date 
     FROM collection WHERE userID = '1234' 
     UNION 
     SELECT DATABASE() as source, 'Blog' as TblName,body, id, date 
     FROM blog WHERE posterID = '1234' 
     ORDER BY date DESC 

Je doute tout dialecte de SQL vous fournir une fonction pour indiquer le nom de la table de la requête, puisque vous pouvez avoir des sous-requêtes, jointures, etc.

+0

..Wow Je me sens stupide ... haha ! Merci! – Moe

+0

Vous ne devriez jamais vous sentir stupide de poser une question – Sparky

Questions connexes