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 !