2009-09-12 8 views
2

J'apprends mysql et j'ai essayé de faire marcher ça, mais une erreur survient toujours peu importe comment je l'essaie - ou ça ne montre rien de la table.obtenir toutes les valeurs de trois tables différentes .. problème JOIN?

J'ai 3 tables, tous avec la même quantité de colonnes et le nom des colonnes

Je veux énumérer toutes les valeurs dans l'ordre alphabétique par titre

Tables: Généralités - Temp - Localisation

Colonnes: id - url - titre - description

Comment écrivez-vous l'instruction select?

J'ai essayé de nombreuses façons et ne peut pas le comprendre ... Je devine que ce serait ressembler à

SELECT * FROM General JOIN Temp ON General.title = Temp.title JOIN Location ON Temp.title = General.title 

J'ai joué autour largement à l'évolution des valeurs telles que Temp.title = Général .title et cela ne semble pas aider

Des idées?

Merci!

p.s - J'ai aussi essayé cela et il fournit des données, mais seulement montre quelques résultats de la table générale avec la quantité de messages de température .. très déroutant

SELECT 
    General.id, 
    General.url, 
    General.title, 
    General.description, 
    Temp.id, 
    Temp.url, 
    Temp.title, 
    Temp.description, 
    Location.id, 
    Location.url, 
    Location.title, 
    Location.description 
FROM 
    General INNER JOIN Temp 
    ON General.id = Temp.id 
    INNER JOIN Location 
    ON Temp.id = Location.id 
ORDER BY 
    General.title 

Répondre

4
(SELECT id, url, title, description FROM General) 
UNION 
(SELECT id, url, title, description FROM Temp) 
UNION 
(SELECT id, url, title, description FROM Location) 
ORDER BY Title 

MySQL Reference.

+1

merci! est-il un moyen que je pourrais utiliser cette syntaxe en ajoutant une table qui a une colonne supplémentaire? – krx

+0

si utile merci !!! – krx

+1

@krio: bien sûr. il suffit d'inclure une valeur 'fictive' dans cette position de colonne pour les autres requêtes qui n'ont pas cette colonne –

1

Pour ajouter une table avec une colonne supplémentaire:

SELECT NULL 'id', 
     NULL 'url', 
     NULL 'title', 
     NULL 'description', 
     NULL 'extra_column' 
    FROM DUAL 
UNION 
SELECT g.id, 
     g.url, 
     g.title, 
     g.description, 
     NULL 
    FROM GENERAL g 
UNION 
SELECT t.id, 
     t.url, 
     t.title, 
     t.description, 
     NULL 
    FROM TEMP t 
UNION 
SELECT l.id, 
     l.url, 
     l.title, 
     l.description, 
     NULL 
    FROM LOCATION l 
ORDER BY title 

Cela suppose que vous voulez toutes les colonnes de la table supplémentaire. Si vous ne le faites pas, n'incluez pas la colonne supplémentaire, mais assurez-vous que les types de données correspondent à la position dans l'instruction SELECT.

+0

merci! cette réponse m'a aussi aidé à mieux comprendre comment sélectionner en sql – krx

Questions connexes