SQL abfrage über 2 tabellen

Hallo zusammen,
ich habe folgendes Problem und hoffe Ihr könnt mir helfen:

Ich habe 2 tabellen:
tabelle 1: applikationen
felder: id, erfasst_von, app_name

tabelle 2: benutzerdaten
felder: id, amt

In der Spalte erfasst_von steht nun immer die id des benutzers der die applikation erfasst hat!

Nun möchte ich alle applikationen ausgegeben bekommen welche von benutzer mit dem gleichen amt erfasst wurden aber nicht von dem benutzer selbst.

beispiel
benutzer id 1 aus dem amt TEST hat applikation A und B erfasst.

benutzer id 2 aus dem amt TEST hat applikation C erfasst

benutzer id 3 aus dem amt MUH hat applikation D erfasst

wenn benutzer mit id 2 angemeldet ist sollen ihm applikation A und B angezeigt werden!

Ich habe bisher folendes probiert:
$sql = „SELECT DISTINCT applikationen.app_name from applikationen,benutzerdaten WHERE benutzerdaten.amt LIKE ‚$_SESSION[user_fachbereich]‘ AND applikationen.erfasst_von NOT LIKE ‚$_SESSION[user_id]‘ ORDER BY applikationen.id“;

Kann mir hierzu jmd. helfen? :wink:
Ich habe das Gefühl, dass man hier irgendwie mit nem JOIN arbeiten müsste
Wäre echt super!

Grüße,
Michael

Hallo Michael,

Nun möchte ich alle applikationen ausgegeben bekommen welche
von benutzer mit dem gleichen amt erfasst wurden aber nicht
von dem benutzer selbst.

Versuchs vll mal so:

$sql = „SELECT DISTINCT applikationen.app_name, benutzerdaten.amt from
applikationen inner join benutzerdaten on benutzerdaten.id = applikationen.erfasst_von WHERE benutzerdaten.amt LIKE
‚$_SESSION[user_fachbereich]‘ AND applikationen.erfasst_von
" . $_SESSION[user_id] .“ ORDER BY applikationen.id";

Gruß, Leebo

Hallo Michael,

Ich habe bisher folendes probiert:
$sql = „SELECT DISTINCT applikationen.app_name from
applikationen,benutzerdaten WHERE benutzerdaten.amt LIKE
‚$_SESSION[user_fachbereich]‘ AND applikationen.erfasst_von
NOT LIKE ‚$_SESSION[user_id]‘ ORDER BY applikationen.id“;

statt „LIKE“ solltest du hier „=“ verwenden. „LIKE“ ist für die Suche mit Mustern auf Strings vorgesehen. Du brauchst hier einen einfachen Test auf Gleichheit.

Ich habe das Gefühl, dass man hier irgendwie mit nem JOIN
arbeiten müsste

Das Gefühl war richtig. :smile: Genau das, was du hier mit eigenen Worten in Deutsch gesagt hast, musst du noch nach SQL übersetzen:

In der Spalte erfasst_von steht nun immer die id des benutzers
der die applikation erfasst hat!

„… AND applikationen.erfasst_von = benutzerdaten.id“

Damit ist die Verknüpfung der beiden Tabellen hergestellt.

Viele Grüße,

Andreas