Wie sprech ich mit php die Daten an
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgeben
auslese
bestimmten datensatz
beziehung
code
dank
datensatz
datum
ergebnis
grad
mitarbeiter
nachname
prinzip
problem
statement
tabelle
tip
versuchen
vorname
zugreifen
-
Ich habe in einer Datenbank folgende Konstellation:
Tabelle Mitarbeiter:
M_ID VORNAME NACHNAME ...
Tabelle Abteilungen:
A_ID BEZEICHNUNG ...
Tabelle Häuser:
H_ID TELEFON FAX ...
Tabelle Beziehung:
B_ID M_ID A_ID H_ID
In der Tabelle Beziehungen sind die PKs der anderen Tabellen als FKs integriert.
Wenn ich jetz mit PHP auf die Daten zugreifen will, dann mach ich das mit einem SQL-Befehl:
$abf_gf = \"SELECT * FROM eke_beziehung WHERE B_ID=0\"; $erg_gf = mysql_query($abf_gf); while($row = mysql_fetch_object($erg_gf)) { echo $row->NACHNAME; }
Der Code ist nicht korrekt, im Prinzip will ich auf den einen bestimmten Datensatz (B_ID = 0) zugreifen und dann den NACHNAMEN des Mitarbeiters ausgeben. Da in dieser Tabelle ja im Datensatz nur die ID des Mitarbeiters eingetragen ist, stellt mich das vor ein Problem. Wie spreche ich nun den NAMEN an und nicht nur die ID????
Wäre über einen Tip sehr dankbar. Falls noch was unklar ist einfach nachfragen ;)
Merci -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wenn ich es richtig verstehe, kannst du einfach einen JOIN anwenden um dein Problem zu lösen.
In der Art müsste es so aussehen:
<? $sql=\" SELECT tabelle_Mitarbeiter.VORNAME AS vorname, tabelle_Mitarbeiter.NACHNAME AS nachname, tabelle_Beziehungen.B_ID AS b_id, tabelle_Beziehungen.M_ID AS m_id, tabelle_Beziehungen.A_ID AS a_id, tabelle_Beziehungen.H_ID AS h_id // jenachdem was du alles aus den Tabellen haben willst FROM tabelle_Mitarbeiter, tabelle_Beziehungen WHERE tabelle_Beziehungen.B_ID = 0 \"; ?>
-
Jo, so ungefähr, aber warum verknüpf ich dann die Tabellen miteinander, wenn ich doch wieder die Daten aus der Ursprungstabelle Mitarbeiter ziehen muss :(((((
Danke aber.
Habe gehofft, dass geht weniger umständlich ;)
Beitrag geändert: 7.2.2008 11:11:10 von karpfen -
Vielleicht geht es auch noch weniger umständlich, aber mir würde spontan nichts einfallen.
Du musst ja irgendwie die Daten wieder aus der Tabelle auslesen, in der sie enthalten sind. Nur über die ID die Daten zu bekommen geht ja nicht, bzw. nur indem du die Tabellen über einen JOIN verknüpfst. Der Vorteil ist, dass du nicht erst die ID aus der einen Tabelle auslesen musst um damit ein neues Query an die andere Tabelle zu formulieren, sondern es in einer Anfrage drinne hast. -
Alles klar, hab grad auf einer SQL-Webseite nachgeschaut. Scheint schon so das Beste zu sein ;)
Dank dir recht herzlich! -
Probier ich es mit deiner Variante aus, dann bekomm ich folgende Fehlermeldung:
mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ........
Mein SQL-Statement ist momentan folgendes:
$sql= \"SELECT mitarbeiter.VORNAME AS vorname, mitarbeiter.NACHNAME AS nachname FROM mitarbeiter, beziehungen WHERE beziehungen.B_ID = 0 AND beziehungen.M_ID = mitarbeiter.M_ID\";
-
Das heißt soviel wie, dass du kein Ergebnis bekommst.
Die Syntax ist eigentlich richtg, denn ich hab bei mir ein ähnliches Statement und das geht so. Es könnte sein, dass er die \"0\" bei beziehungen.B_ID = 0 als NULL oder FALSE interpretiert. Wenn in der Tabelle wirklich \"0\" steht, könntest du versuchen es so zu schreiben beziehungen.B_ID = \'0\'. Oder er mag die Großschreibung der Spaltennamen nicht. Das wäre so das einzige was mir grade auffällt.
Wenn ich solche Fehler erhalte, dann versuche ich es zurück zu verfolgen, also das Query soweit zu vereinfachen, dass ich auf jeden Fall ein Ergebnis erhalte und dann die Bedingungen wieder einzufügen und zu sehen, wo es grade hängt. -
Jo, hehe danke für den Tip,
Hab den Fehler noch gefunden.
Man sollte natürlich die Namen der Tabellen scho richtig schreiben und nicht aus
beziehung
>>
beziehungen
machen. -
im Prinzip will ich auf den einen bestimmten Datensatz (B_ID = 0) zugreifen und dann den NACHNAMEN des Mitarbeiters ausgeben. Da in dieser Tabelle ja im Datensatz nur die ID des Mitarbeiters eingetragen ist, stellt mich das vor ein Problem. Wie spreche ich nun den NAMEN an und nicht nur die ID????
Ganz einfach:
SELECT b.B_ID, m.NACHNAMEN FROM mitarbeiter AS m INNER JOIN beziehung AS b ON b.M_ID = m.M_ID WHERE b.B_ID = 0
Bitte sehr.
//edit: Falls die Mitarbeiter in der Beziehungstabelle nur einmal vorkommen und die restlichen Daten mehrmals sein können, könnte man auch B_ID weg lassen und einen kombinierten PK aus den FKs erzeugen.
Beitrag geändert: 7.2.2008 13:26:01 von evil-devil -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage