ich habe mir eine Telefondatenbank erstellt mit den Tabellen: nutzername_tab, telefonnr_tab, funktion_tab, etc
Anhand der Spalten "telefonnr1id" und "telefonnr2id" in nutzername_tab erfolgt die Zuordnung zur Tabelle telefonnr_tab
in der alle Telefonnummer gespeichert sind. Über ein Formular kann man die ganze Datenbank durchsuchen, dies funktionierte
auch solange der Nutzer nur eine telefonnrid hatte.
Leider kann man die Alias-namen (tel1 und tel2) nicht in der Where-Klausel verwenden. Laut Doku sind Alias-Namen nicht erlaubt und man soll
die komlette Select-Anweisung noch mal in die Where-Klausel bringen. Dies habe ich getan, aber irgendwas stimmt an meinem Syntax
nicht (siehe ...SELECT `telefonnr` FROM telefonnr_tab... in der Where-Klausel). Ich habe schon alles ausprobiert, komme aber einfach nicht weiter...
Code: Alles auswählen
$select = $verbindung->prepare("SELECT t1.nutzername, t1.nachname, t1.vorname, t2.titel, t3_1.telefonnr as tel1, t3_2.telefonnr as tel2, t4.funktion, t5.bereich, t6.haus, t7.organisation, t8.standort
FROM
nutzername_tab t1
LEFT JOIN
titel_tab t2 ON t2.titelid = t1.titelid
LEFT JOIN
telefonnr_tab t3_1 ON t3_1.telefonnrid = t1.telefonnr1id
LEFT JOIN
telefonnr_tab t3_2 ON t3_2.telefonnrid = t1.telefonnr2id
LEFT JOIN
funktion_tab t4 ON t4.funktionid = t1.funktionid
LEFT JOIN
bereich_tab t5 ON t5.bereichid = t1.bereichid
LEFT JOIN
haus_tab t6 ON t6.hausid = t1.hausid
LEFT JOIN
organisation_tab t7 ON t7.organisationid = t1.organisationid
LEFT JOIN
standort_tab t8 ON t8.standortid = t1.standortid
WHERE (`nutzername` LIKE :suchbegriff OR
`nachname` LIKE :suchbegriff OR
`vorname` LIKE :suchbegriff OR
`titel` LIKE :suchbegriff OR
SELECT `telefonnr` FROM telefonnr_tab
LEFT JOIN
`telefonnr_tab` ON telefonnr_tab.telefonnrid = nutzername_tab.telefonnr1id OR
telefonnr_tab.telefonnrid = nutzername_tab.telefonnr2id
WHERE (`telefonnr` LIKE :suchbegriff) OR
`funktion` LIKE :suchbegriff OR
`bereich` LIKE :suchbegriff OR
`haus` LIKE :suchbegriff OR
`organisation` LIKE :suchbegriff OR
`standort` LIKE :suchbegriff)
ORDER BY `vorname` DESC
LIMIT 0, 25");