Ich würde es so versuchen:
SELECT * FROM inhalt, Firmenname ON Firmen_id = Firmenname
Gehen wir mal von den Fall aus das meine Tabelle „Inhalt“ aus 5 Spalten besteht und das diese Tabelle bereits mit 200 Datensätzen gefüllt ist:
Tabelle „Inhalt“:
Id --- Firmenname --- Kundennr --- Ort --- Rechnungsnr.
1 ----- Adidas -------- 14485434 --- -HA ---- 9847545432
2 ----- Puma ---------- 24385666 --- -HA ---- 1313546568
3
.
.
.
200
Die Ausgabe aller Datensätze realisiere ich mit eine WHILE Schleife:
$result=mysql_query ("SELECT * FROM inhalt ..... ") or die ("....");
while ($daten=mysql_fetch_array($result))
{
…
…
…
}
Soweit kein Thema. Ich möchte jetzt aber die Datenbank anders strukturieren. Der Datensätze „Firmenname“ möchte ich ein einer eigenen Tabelle speichern:
Tabelle „Firmenname“
Firmen_id – Firmenname
1000 ----------- Adidas
1001 ----------- Puma
1002
1003
Tabelle „Inhalt“:
Id --- Firmenname --- Kundennr --- Ort --- Rechnungsnr.
1 ----- 1000 -------- 14485434 --- -HA ---- 9847545432
2 ----- 1001 -------- 24385666 --- -HA ---- 1313546568
3
.
.
.
200
Wenn ich nun die Datensätze ausgeben lassen will, dann muss ich 2 WHILE Schleifen ineinander verschachteln (die firmen_id soll ja durch den firmennamen ersetzt werden):
$result=mysql_query ("SELECT * FROM inhalt ..... ") or die ("....");
while ($daten=mysql_fetch_array($result))
{
$kunde = $daten[1];
$result2=mysql_query ("SELECT * FROM firmenname WHERE id=’$kunde’") or die ("....");
while ($daten2=mysql_fetch_array($result2))
{
...
...
...
Meine Frage lautet nun: gibt es eine bessere Lösung als das ineinander verschachteln von 2 WHILE Schleifen?
Ich würde es so versuchen:
SELECT * FROM inhalt, Firmenname ON Firmen_id = Firmenname
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
besser:
nur dumm, das das Feld Firmenname doppelt vorhanden ist - ich würds umbenennenCode:SELECT inhalt.*, Firmenname.Firmenname FROM inhalt i LEFT JOIN Firmenname f ON f.Firmen_id = i.Firmenname
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Das i nach inhalt, bzw. das f nach Firmenname, kürz das den Tabellennamen für den Rest des Query's ab?Zitat von St@eff.en
jep - aber vorsicht, geht nicht mehr im where und order, aber ideal für die ON-Zuweisungen
"inhalt i" ist das selbe wie "inhalt as i"
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Cool, das Hilft mir
Und mit Backticks dann ganz normal `i`?!
Backticks sind nie verkehrt - damit beugt man der Problematik "Schlüsselworte" vor. Ist man sich sicher, das es keine Schlüsselworte sind, kann man Backticks auch weglassen (wird auch oft hauptsächlich aus Bequemlichkeit gemacht).
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)