Abfrage über mehreren Tabellen

Abfrage über mehreren Tabellen

am 27.10.2005 10:06:45 von Markus Schmidt

Moinmoin NG!

Hoffe Ihr habt da einen guten Tipp für mich :)

Ich hab da ne tabelle "Lieferscheine" - in dieser Tabelle stehen diverse IDs
drin, die in anderen Tabellen Mitarbeitern, Kunden oder Büros zugeordnet
sind (jeweils eine) nun meine Frage(n):

bei der Abfrage

SELECT x,y,z,a,b,c FROM tabellenname WHERE diverse kriterien etc...
und dem üblichen ... mysql_fetch_array($result blaah)

hab ich dann an eingen stellen die IDs der anderen Tabelleninhalte... da in
so einer tabelle kryptische ID-Nummern nicht wirklich toll aussehen würde
ich gerne an der stelle wo die ID im Datensatz ausgespuckt wird in die
andere Tabelle "schauen" und aus der ID einen Namen, einen Kunden oder eine
Geschätsstelle machen... damit es etwas schöner anzuschauen ist.

Meine Idee wäre Folgende:

=> Abfrage
WHILE Ergebnis {
$irgendwas = $row["irgendwass"];
$mitarbeiter = ID
$geschätsstelle = ID
.....
=> Abfrage Mitarbeitertabelle WHERE id=mitarbeiter
$mitarbeitername = $row["..."]

=> Abfrage Geschäftsstelle WHERE id=geschäftsstelle
$geschäftsstelle = $row ["...."]

ausgabe tabellenzeile
}

das Ganze sieht mir aber
1. nicht wirklich elegant gelöst aus und
2. nicht wirklich performat - da die tabellen recht gross werden und mehrere
leute gleichzeitig an dem Frontend arbeiten sollen (müssen ;-))

Nun die Frage: was ist eleganter? Schneller? Wo kann ich nachlesen?

Danke für die Tipps!
Markus

P.S. das $geschÄftsstelle nicht funktioniert weiss ich schon ;-)

Re: Abfrage über mehreren Tabellen

am 27.10.2005 10:11:21 von Kirsten

Markus Schmidt schrieb:
> Moinmoin NG!
>
> Hoffe Ihr habt da einen guten Tipp für mich :)
>
> Ich hab da ne tabelle "Lieferscheine" - in dieser Tabelle stehen diverse IDs
> drin, die in anderen Tabellen Mitarbeitern, Kunden oder Büros zugeordnet
> sind (jeweils eine) nun meine Frage(n):
>
> bei der Abfrage
>
> SELECT x,y,z,a,b,c FROM tabellenname WHERE diverse kriterien etc...
> und dem üblichen ... mysql_fetch_array($result blaah)
>
> hab ich dann an eingen stellen die IDs der anderen Tabelleninhalte... da in
> so einer tabelle kryptische ID-Nummern nicht wirklich toll aussehen würde
> ich gerne an der stelle wo die ID im Datensatz ausgespuckt wird in die
> andere Tabelle "schauen" und aus der ID einen Namen, einen Kunden oder eine
> Geschätsstelle machen... damit es etwas schöner anzuschauen ist.
>
> Meine Idee wäre Folgende:
>
> => Abfrage
> WHILE Ergebnis {
> $irgendwas = $row["irgendwass"];
> $mitarbeiter = ID
> $geschätsstelle = ID
> .....
> => Abfrage Mitarbeitertabelle WHERE id=mitarbeiter
> $mitarbeitername = $row["..."]
>
> => Abfrage Geschäftsstelle WHERE id=geschäftsstelle
> $geschäftsstelle = $row ["...."]
>
> ausgabe tabellenzeile
> }
>
> das Ganze sieht mir aber
> 1. nicht wirklich elegant gelöst aus und
> 2. nicht wirklich performat - da die tabellen recht gross werden und mehrere
> leute gleichzeitig an dem Frontend arbeiten sollen (müssen ;-))
>
> Nun die Frage: was ist eleganter? Schneller? Wo kann ich nachlesen?
>
> Danke für die Tipps!
> Markus
>
> P.S. das $geschÄftsstelle nicht funktioniert weiss ich schon ;-)
>
>
Einfacher Join:

Select a.row1, a.row2, a.row3, b.row1, b.row2
where a.id1 = b.id2

Damit solte schon was gehen.

Gruß
Kirsten

Re: Abfrage über mehreren Tabellen

am 27.10.2005 11:58:29 von Markus Schmidt

> Einfacher Join:
>
> Select a.row1, a.row2, a.row3, b.row1, b.row2
> where a.id1 = b.id2

Hi Kirsten! Stimmt - da war mal was :) aber... so einfach scheint es doch
nicht zu sein - oder ich bin zu doof :( hier nochmal im Detail:

SELECT
tbl_intra_pv_ls.ccid,
tbl_intra_pv_ls.vermittler,
tbl_intra_pv_ls.ok,
tbl_intra_pv_ls.lsstat,

tbl_intra_gbl_benutzer.nachname

FROM
tbl_intra_pv_ls

INNER JOIN
tbl_intra_gbl_benutzer
ON
tbl_intra_gbl_benutzer.nachname=tbl_intra_pv_ls.vermittler


liefert genau 0 ergebnisse :( obwohl aber was drinsteht... seh ich echt hier
den Wald vor lauter Bäumen nicht mehr? brauch ich Urlaub?

viele Grüße
Markus

Re: Abfrage über mehreren Tabellen

am 27.10.2005 12:12:55 von Markus Schmidt

> Einfacher Join:
>
> Select a.row1, a.row2, a.row3, b.row1, b.row2
> where a.id1 = b.id2


Es ging doch was :)

habs jetzt so gelöst:

SELECT
tbl_intra_pv_ls.lsnr,
tbl_intra_pv_ls.vermittler,
tbl_intra_gbl_benutzer.nachname

FROM
tbl_intra_pv_ls

JOIN
tbl_intra_gbl_benutzer
ON
tbl_intra_gbl_benutzer.id = tbl_intra_pv_ls.vermittler

D A N K E !