2015-12-15 3 views
-2

Espérons que 1066 vous allez me aider à nouveau :)MySQL - Plus Rejoignez les opérateurs, plus d'alias et erreur

Eh bien, le problème que j'ai est semblable à celui que j'ai posté hier, mais il est élargi.

Nous sommes donnés trois tables:

Table: pfleger Pfleger

Table: station station

Table: mitarbeiter Mitarbeiter

Comme indique ci-dessus, ce problème est très similaire à this problème.

Quel a été le résultat? Eh bien, je reçois une table avec les ID et les noms des travailleurs qui vivent à Francfort.

Maintenant, je devrais en outre récupérer les ID et les noms des travailleurs qui vivent à Francfort et de travailler dans la station appelée Onkologie.

Comment est-ce que je devrais faire ceci?

Mon code à ce jour:

SELECT pfleger.PNR, Name 
from mitarbeiter, ... 
JOIN pfleger on (mitarbeiter.PNR=pfleger.PNR) 
JOIN ... 
where Ort='Frankfurt' and Name='Onkologie' 

Je ne sais pas comment faire 2 JOIN.

+1

Où pouvons-nous « francfort » Je ne le vois pas dans les tableaux listés ou dans les exemples de données. et de la notation the mitarbeiter, avec la syntaxe 'join' n'est pas valide. vous ne pouvez pas mélanger les normes ANSI 92 avec les normes antérieures. (soit utiliser la syntaxe de jointure 'INNER/OUTER' ou ',' entre les noms de tables mais pas les deux) dans quelle table est 'ORT'? Je ne le vois pas dans les captures d'écran. – xQbert

+0

De même, vous n'avez pas épelé les noms des tables dans vos captures d'écran. Pourriez-vous mettre à jour votre question afin d'inclure les noms des tables au-dessus des captures d'écran? – xQbert

+0

J'ai mis à jour ma question en incluant une nouvelle image et les noms des tables. – user2379123

Répondre

0

Vous pouvez essayer quelque chose comme ça

select m.PNR, m.Name 
from Mitarbeiter m 
inner join Station s on s.PNR = m.PNR 
inner join Pfleger p on p.StationID = s.StationID 
where 
    m.Ort = 'Frankfurt' 
    and p.Name = 'Onkologie' 
0

Mise à jour basée sur les noms de table et les noms de colonnes fournis pour les tables.

Note: nous avons éliminé la notation , après mitarbeiter, dans votre requête de base.

Je ne vois pas PNR dans mitabeiter donc je suppose que stationID est la façon dont ils se joignent.

SELECT * 
FROM pfleger P 
INNER JOIN Station S 
on S.StationId = P.StationID 
INNER JOIN mitarbeiter M 
on M.pnr = S.pnr 
WHERE M.ORT='Frankfurt' and P.name = 'Onkologie' 

Hypothèses je fait: pfleger.stationID a une relation de clé étrangère station.stationID mitarbeiter.PNR a une relation de clé étrangère station.PNR

Nous jointures utilisé ici comme nous voulons seulement Mitarbeiter qui existent dans les 3 tables. Sinon, nous pourrions utiliser des jointures externes et renvoyer celles qui n'ont pas d'enregistrements. (Ce qui signifie qu'il ne sait pas où ils travaillent, il pourrait être « Onkologie », mais nous ne savons pas car il n'y a pas d'enregistrement.)

+0

J'ai modifié mon post précédent avec les noms des tables. – user2379123

+0

@ user2379123 Mise à jour de la réponse basée sur des captures d'écran/noms de table mis à jour. – xQbert