Forum Doku Wiki Blog

Forumsarchiv 2004, August
Probleme mit LEFT JOIN (mySQL)

archivierte Beiträge lesen

  1. (DATENBANK) Probleme mit LEFT JOIN (mySQL) von franz, 18. 08. 2004, 10:59

Probleme mit LEFT JOIN (mySQL)

Der folgende Beitrag wurde am 18. 08. 2004, 10:59 Uhr von franz veröffentlicht.

Servus!

kriege eine bestimmte LEFT JOIN Anweisung einfach nicht hin.

habe die Tabelle Gewerk:

gewerk_id   int(11)  Nein
gewerk_name   varchar(255) Nein
gewerk_meister   int(11)  Nein  0
gewerk_vertreter   int(11)  Nein  0
gewerk_angelegt   date Nein  0000-00-00
gewerk_ersteller   int(11)  Nein  0

Wie ihr seht gibt es pro Gewerk(Abteilung) einen Meister und einen Vertreter.

In den Spalten gewerk_meister und  gewerk_vertreter sind allerdings nicht die Namen gespeichert sondern deren Personalnummer. Welche auf

Wenn ich nun die Tabelle Gewerk ausgeben lassen will, erhalte ich mit einem normalen SELECT * FROM gewerk aller Felder, allerdings mit Personalnummer der Meister und Vertreter - wie schaffe ich es, dass dort die Nachnamen, Vornamen stehen?


Mit folgendem Statement, erhalte ich zwar Werte allerdings nicht die die gewünscht sind:

-------------------------------------------------------------------

SELECT gewerk.gewerk_name, gewerk.gewerk_vertreter, personal.mit_nachname
FROM gewerk
LEFT JOIN personal
ON(gewerk_meister = personalnummer  OR gewerk_vertreter = personalnummer) GROUP BY personal.mit_nachname

--------------------------------------------------------------------

ergebnis:

+-------------+------------------+--------------+
| gewerk_name | gewerk_vertreter | mit_nachname |
+-------------+------------------+--------------+
| Einkauf     |           119163 |       [NULL] |
| Vertrieb    |           116279 |       Müller |
| Werkstatt   |           109621 |         Hans |
| Produktion  |           109621 |        Franz |
+-------------+------------------+--------------+


Es stimmt zwar, dass Müller und Franz Vertreter sind, aber Hans ist Meister - taucht aber auch auf.


Danke für eure Hilfe!

gruß Franz

Probleme mit LEFT JOIN (mySQL)

Der folgende Beitrag wurde am 18. 08. 2004, 11:09 Uhr von MM veröffentlicht.

> Es stimmt zwar, dass Müller und Franz Vertreter sind, aber Hans ist Meister - taucht aber auch auf.

klar, willst du laut sql-befehl ja auch nicht anders (im join sind zwei mit or verknüpfte bedingungen - die eine für die meister die andere für die vertreter)

wozu eigentlich die group-by-klausel?

Probleme mit LEFT JOIN (mySQL)

Der folgende Beitrag wurde am 18. 08. 2004, 11:36 Uhr von Sky veröffentlicht.

Hallo franz!

> Wenn ich nun die Tabelle Gewerk ausgeben lassen will, erhalte ich mit einem normalen SELECT * FROM gewerk aller
> Felder, allerdings mit Personalnummer der Meister und Vertreter - wie schaffe ich es, dass dort
> die Nachnamen, Vornamen stehen?

>    SELECT gewerk.gewerk_name,
>           gewerk.gewerk_vertreter,
>           personal.mit_nachname
>      FROM gewerk
> LEFT JOIN personal
>           ON (gewerk_meister = personalnummer  OR gewerk_vertreter = personalnummer)
> GROUP BY personal.mit_nachname
> ergebnis:

Ungestest und ohne Gewähr auf Richtigkeit:


Vorschlag A:

    SELECT gewerk.gewerk_name,
           gewerk.gewerk_meister,
           a.mit_nachname AS 'Meister_Nachname',
           gewerk.gewerk_vertreter,
           b.mit_nachname AS 'Vertreter_Nachname'
      FROM gewerk
 LEFT JOIN personal AS a ON gewerk.gewerk_meister = a.personalnummer,
           personal AS b ON gewerk_vertreter = b.personalnummer)
  GROUP BY personal.mit_nachname


Vorschlag B:

    SELECT gewerk.gewerk_name,
           gewerk.gewerk_vertreter,
           personal.mit_nachname
      FROM gewerk
 LEFT JOIN personal ON gewerk_vertreter = personal.personalnummer
  GROUP BY personal.mit_nachname


> Es stimmt zwar, dass Müller und Franz Vertreter sind, aber Hans ist Meister - taucht aber auch auf.

Was willst du eigentlich nun? Zu jedem Wert der Spalte gewerk.gewerk_meister und gewerk.gewerk_vertreter jeweils die passenden Nachnamen aus der Tabelle personal verknüpft mit der Spalte personal.personalnummer? Bzw. die Nachnamen von Meister und Vertreter oder nur die der Vertreter deren Personalnummern in der Tabelle gewerk stehen?


Grüsse,

Sky

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4