Mailinglisten-Archive |
> > ich brauche dringend einmal ein wenig Hilfe. > Meine Query treibt mich seit gestern zum Wahnsinn. > Gegeben ist: > $row = (id=1,familie=1,partner=2,...) (id=2,familie=1,partner=1,...) > > Aufgabe ist nun, aus 2 Tabellen [Familien(lauter IDs), Personen] > Informationen über die Partnerverhältnisse, Husband & Wife Namen > etc herauszuholen. Mein Versuch lautete: > > SELECT > a.familie, a.partner, > b.id, b.lastname, b.firstname, b.birthname > FROM family AS a, person AS b > WHERE a.partner = '$row[id]' > AND a.partner = b.id > GROUP BY b.id"; > > Damit bekomme ich ein gemergtes Array aus beiden Tabellen: > Array > ( > [familie] => 1 > [partner] => 1 > [id] => 1 > [lastname] => Gans > [firstname] => Johann Gustav > [birthname] => > ) > > Ich möchte aber folgendes angezeigt bekommen > Array > ( > [familie] => 1 > [partner_id] => 2 > [partner_lname] => Gans > [partner_fname] => Anna Sophie > [partner_bname] => Gramel > [id] => 1 > [lastname] => Gans > [firstname] => Johann Gustav > [birthname] => > ) > Hi Christoph, Das was du vorhast stimmt nicht mit der Struktur deiner Datenbank überein. Wenn ich dich richtig verstanden habe möchtest du eine Art Ahnentafel erstellen. So wie du das aufgebaut hast gehts im Leben nicht zu. Also bevor ich dir hier ne Query für falsche Gedanken rüberhaue gibts mal Grundkenntnisse in Datenbankstrukturen: 1. Du benötigst eine Personentabelle (Die hast du ja schon ;-) in der du alles einträgst was die Person betrifft. 2. Jetzt brauchst du eine Beziehungstabelle die folgendermassen aufgebaut ist: CREATE TABLE beziehungen ( bezid int(10) unsigned NOT NULL auto_increment, persid1 int(10) unsigned NOT NULL default '0', persid2 int(10) unsigned NOT NULL default '0', beziehungsart enum('verliebt','verlobt','verheiratet','geschieden','fremdgegangen','Fr eunde','Totfeinde') NOT NULL default 'verheiratet', PRIMARY KEY (bezid) ) Wie du siehst sind in dieser Tabelle zwei Personenid's und ein drittes Feld das die Beziehung beschreibt. Damit ist die Beziehung eindeutig definiert, was bei deinem Ansatz ja nicht der Fall ist. Jetzt gehts weiter ;-)) Zwei Personen sind ja nicht nur zusammen um Händchen zu halten, sondern... du weisst schon, das mit den Schmetterlingen und so... Also da brauchen wir doch noch was, ach ja Kinder!! 3. Die Kidstabelle: CREATE TABLE kinder ( kidid int(10) unsigned NOT NULL auto_increment, bezid int(10) unsigned NOT NULL default '0', PRIMARY KEY (kidid) ) So jetzt ham ma alles beinand. Jetzt kannst du z.B. alle verheirateten Paare suchen: SELECT b.*, c.* FROM beziehungen as a LEFT JOIN personen as b ON a.persid1 = b.persid LEFT JOIN personen as c ON a.persid2 = c.persid where beziehungsart = 'verheiratet' Klar? Nächste Aufgabe: Suche alle Kinder geschiedener Eltern? oder Suche alle Grossväter? oder Wer ist Onkel oder Tante? Aber a bisserl was sollst du ja auch noch machen ;-)) MFG Wolfgang --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive