Hallo,
ich arbeite gerade an unserem Stammbaum und möchte den Ehenamen in die Suche einschließen. TNG speichert alle Personen in einer Tabelle. Familien (also Ehen) werden in einer speraten Tabelle gespeichert.
Hier mal der Aufbau der Tabellen.
Code:
Tabellenstruktur für Tabelle tng_families
Feld Typ Null Standard
ID int(11) Ja NULL
familyID varchar(22) Ja NULL
husband varchar(22) Ja NULL
wife varchar(22) Ja NULL
changedate datetime Ja NULL
living tinyint(4) Ja NULL
Code:
Tabellenstruktur für Tabelle tng_people
Feld Typ Null Standard
ID int(11) Ja NULL
gedcom varchar(20) Ja NULL
personID varchar(22) Ja NULL
lnprefix varchar(25) Ja NULL
lastname varchar(127) Ja NULL
firstname varchar(127) Ja NULL
birthdate varchar(50) Ja NULL
birthdatetr date Ja NULL
sex tinytext Ja NULL
birthplace text Ja NULL
living tinyint(4) Ja NULL
husband und wife aus der Tabelle tng_families sind jeweils mit der personID aus der Tabelle tng_people bestückt. Und das ist genau mein Problem. Ich habe ein Eingabefeld $keyword.
Gibt es eine Möglichkeit eine Abfrage zu bauen die den Nachnamen (tng_people.lastname) beider Ehepartner (wife und husband in tng_families) unter Betracht zieht?
Beispiel:
Das Suchwort ($keyword) ist "Mustermann"
Unter tng_people gibt es "Max Mustermann" (personID=1) und seine Frau "Maria Musterfrau" (personID=2). Unter tng_families besteht eine Ehe mit den Werten husband=1 und wife=2.
Wie bekomme ich es nun hin das bei dem Suchwort "Mustermann" auch die Frau als "Maria Mustermann" gefunden wird, obwohl sie in der Datenbank als "Maria Musterfrau" steht?
Hat jemand einen Rat für mich? Sämtliche SQL Anweisungen die ich probiert habe führen nicht zu dem Ergebnis was ich mir erhofft habe.
Code:
SELECT fam.wife, fam.husband FROM tng_families fam
WHERE fam.husband <= ALL (SELECT peoa.personID as husbandID FROM tng_people peoa WHERE peoa.lastname LIKE '%Mustermann%')
OR fam.wife <= ALL (SELECT peob.personID as wifeID FROM tng_people peob WHERE peob.lastname LIKE '%Mustermann%')
Code:
SELECT peo.* FROM tng_people peo
WHERE peo.lastname LIKE '%Mutsermann%'
OR peo.personID <= ALL (SELECT fam.husband FROM tng_families fam)
OR peo.personID <= ALL (SELECT fam.wife FROM tng_families fam);
Danke schon mal.