2014-09-03 4 views
0

J'ai trois tables avec des étudiants, des employés et des étudiants. La colonne "Ville" dans Employés et étudiants est un entier et fait référence à la ville de la table où stocker beaucoup de villes.Problèmes SQL avec jointure

Maintenant, je veux une liste de toutes les personnes dans la table Employés et étudiants avec la ville se trouve la personne dans.

Par exemple:

 
    Name    | City 
    --------------------------------- 
    James (Employee) | London 
    Jesus (Student) | London 
    Daniel (Employee) | Manchester 
+0

prochaine fois montrer votre code SQL dans la capture d'écran;) – Vland

+1

pourquoi pas cette fois – SriniV

+2

appeler "Ville" votre fk La table de la ville n'est pas une bonne idée. ce serait mieux "CityID" – Vland

Répondre

2
SELECT Name, 'Employee' AS 'Role', c.City 
FROM Employees AS e 
INNER JOIN Cities AS c ON e.City = c.id 
UNION ALL 
SELECT Student, 'Student' AS 'Role', c.City 
FROM Students AS s 
INNER JOIN Cities AS c ON s.City = c.id 

Je suggère également de modifier certains noms de champs:

  • Tableau étudiants: Renommer Student à Name
  • Tableau étudiants: Renommer City à CityID
  • table Employés: Renommer City à CityID
1

Que diriez-vous les éléments suivants:

SELECT e.Name + '(Employee)', c.City 
FROM Employees e 
INNER JOIN Cities c ON e.City = c.id 
UNION ALL 
SELECT s.Student + '(Student)', c.City 
FROM Students s 
INNER JOIN Cities c ON s.City = c.id