Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Spezielle Datenbankabfrage mit 3 Tabellen Antworten
Spezielle Datenbankabfrage mit 3 Tabellen

TeX
Feiertags-Poster


Beiträge: 30


Hi,
ich hab ein größeres Prob, denk ich jedenfalls.

Es gibt 3 Datenbank-Tabellen:

Datensätze
Benutzer
Navigation

Die Datensätze sind durch die ID-Nr. der beiden anderen Tabellen verknüpft, nun hab ich eine Suchfunktion die nach Benutzern sucht (mit LIKE) und durch einen separaten String auch noch die Navigation (durch LIKE). Jetzt sollen die passenden Datensätze ausgelesen werden wo beide ID-Nr. vorkommen.

Mit 2 Tabellen ist das ja kein Prob, aber mit 3 kann ich mir nicht mehr vorstellen wie das gehen soll, o. wie die Syntax aussieht.

Bsp. mit 2 Tabellen:

1: 
2:
SELECT * FROM Datensätze AS A LEFT OUTER
JOIN Benutzer AS B ON A.user_id = B.id WHERE B.name LIKE '%".$_GET[str]."%';


Habt Ihr ne Lösung dafür das nur Datensätze ausgegeben, wenn die Ergebnisse der 2 anderen Tabellen gefunden wurden?

Diese Nachricht wurde geändert von: TeX
  Profil   E-Mail   Website   Editieren   Zitieren

progrookie
Fachidiot


Beiträge: 128


TeX schrieb am 08.11.2005 10:42
Hi,
ich hab ein größeres Prob, denk ich jedenfalls.

Es gibt 3 Datenbank-Tabellen:

Datensätze
Benutzer
Navigation

Die Datensätze sind durch die ID-Nr. der beiden anderen Tabellen verknüpft, nun hab ich eine Suchfunktion die nach Benutzern sucht (mit LIKE) und durch einen separaten String auch noch die Navigation (durch LIKE). Jetzt sollen die passenden Datensätze ausgelesen werden wo beide ID-Nr. vorkommen.

Mit 2 Tabellen ist das ja kein Prob, aber mit 3 kann ich mir nicht mehr vorstellen wie das gehen soll, o. wie die Syntax aussieht.

Bsp. mit 2 Tabellen:

1: 
2:
SELECT * FROM Datensätze AS A LEFT OUTER
JOIN Benutzer AS B ON A.user_id = B.idWHERE B.name LIKE '%".$_GET[str]."%';


Habt Ihr ne Lösung dafür das nur Datensätze ausgegeben, wenn die Ergebnisse der 2 anderen Tabellen gefunden wurden?



Sollte nicht vor der WHERE Bedingung ein Leerzeichen sein....?

---

  Profil   E-Mail   Website   Editieren   Zitieren

TeX
Feiertags-Poster


Beiträge: 30


Jop, hab ich geändert, aber das Prob der 3 Tabellen bleibt trotzdem.

  Profil   E-Mail   Website   Editieren   Zitieren

TeX
Feiertags-Poster


Beiträge: 30


Hab eine Lösung gefunden:

1: 
2: 
3:
SELECT * FROM Datensätze
WHERE Datensätze.user_id IN ( SELECT id FROM Benutzer WHERE name LIKE '%".$_GET[str]."%')
AND Datensätze.navi IN ( SELECT id FROM Navigation WHERE name LIKE '%".$_GET[str2]."%')";


Der IN-Befehl war mir nicht bekannt ...

  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben