Problem bei MySQL-Abfragedefinition

Hallo,

Ich möchte eine Abfrage definieren, die in einer Tabelle nach einem vorgegebenen Kriterium sucht, sich aber dabei zusätzliche Informationen aus zwei weiteren Tabellen holt.

Im Klartext heisst das:

In der führenden Tabelle (Bewegung) stehen Artikelnr und Personalnr. und noch ne Reihe anderer Felder.
Für die vorgegebene Personalnummer in Bewegung soll nun aus der Tabelle Artikel das Feld Bezeichnung und aus der Tabelle Personal das Feld Name gezogen werden.

Leider stoße ich da noch auf erheblichen Widerstand entsprechend meinen Erfahrungen bei der Verwendung von mehreren Tabellen.

Sicherlich hat einer von Euch die passende Lösung parat?
Vielen Dank schonmal!!!

Knud

Hallo,

Ich möchte eine Abfrage definieren, die in einer Tabelle nach
einem vorgegebenen Kriterium sucht, sich aber dabei
zusätzliche Informationen aus zwei weiteren Tabellen holt.

Im Klartext heisst das:

In der führenden Tabelle (Bewegung) stehen Artikelnr und
Personalnr. und noch ne Reihe anderer Felder.
Für die vorgegebene Personalnummer in Bewegung soll nun aus
der Tabelle Artikel das Feld Bezeichnung und aus der Tabelle
Personal das Feld Name gezogen werden.

Leider stoße ich da noch auf erheblichen Widerstand
entsprechend meinen Erfahrungen bei der Verwendung von
mehreren Tabellen.

Sicherlich hat einer von Euch die passende Lösung parat?
Vielen Dank schonmal!!!

Knud

Hallo Knud

Bei Access-Datenbanken im Zusammenhang mit SQL-Datenbanken eröffne ich eine neue Abfrage dann Entwurfsansicht. Die vorhanden Tabellen werden dabei eingeblendet.
In deinem Fall wählst du Tabelle „Bewegung“ und die Tabelle „Artikel“
Verbinde die „eindeutigen Datensäte“ in deinem Fall die Persnummer mit der Persnummer beider Tabellen in dem du mit der Maus die Persnummer zur Persnummer der anderen Tabelle rüberziehst. Dann müßte die Persnummer mit der Persnummer der anderen Tabelle mit einer Verbindung versehen sein.
Dann kannst du aus beiden Tabellen die jeweiligen Datenfelder nach Bedarf auswählen.
Wie gesagt so gehts mit Access

Gruß Christian

Hallo Christian,

danke für Deine Antwort, aber leider kann ich mit Deiner Antwort nichts anfangen, da ich die Abfrage innerhalb eines PHP-Scripts beim Zugriff auf MySQL selbst beschreiben muss.

Mein bisheriger Versuch sieht so aus:

$abfrage = „select b.*,p.name,e.bezeichnung from essenbewegung AS b,personal AS p,essenstamm where b.personalnummer = ‚$persnr‘ AND b.personalnummer = p.personalnummer AND b.artikelnummer = e.artikelnummer“;

Aber das klappt halt nicht.

Hoffnungsvoll,

Knud

Hi Knud,
zunächst einmal:

Aber das klappt halt nicht.

Was klappt genau nicht? Ich vermute, Du bekommst keine Datensätze selektiert. Das hat dann wohl damit zu tun, daß Du irgendwo eine 0:n-Beziehung hast.

Mein bisheriger Versuch sieht so aus:

$abfrage = „select b.*,p.name,e.bezeichnung from essenbewegung
AS b,personal AS p,essenstamm where b.personalnummer =
‚$persnr‘ AND b.personalnummer = p.personalnummer AND
b.artikelnummer = e.artikelnummer“;

Das würde nur klappen, wenn Du in allen drei Tabellen passende Datensätze hast (inner join). Wenn meine Vermutung zutrifft, dann mußt Du die Art des Joins verändern (outer join).
Ich würde vermuten, daß es zwischen essenstamm und essenbewegung ist, evtl. auch zwischen essensbewegung und personal:

select b.\*,p.name,e.bezeichnung 
 from (essenbewegung AS b left join personal AS p 
 on b.personalnummer = p.personalnummer) 
 left join essenstamm as e 
 on e.artikelnummer = b.artikelnummer
 where b.personalnummer = '$persnr';

So oder sehr ähnlich müßte das laufen.

Gruß

J.

Hallo José!

select b.*,p.name,e.bezeichnung
from (essenbewegung AS b left join personal AS p
on b.personalnummer =
p.personalnummer)
left join essenstamm as e
on e.artikelnummer = b.artikelnummer
where b.personalnummer = ‚$persnr‘;

So oder sehr ähnlich müßte das laufen.

Sogar genauso läuft es jetzt und ich bin Dir sehr dankbar.
Hätte mir vielleicht mal anschauen sollen, was Joins so machen, bzw. was ich damit machen kann. Tolle Sache das!

Grüße,

Knud