Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Abfrage über 2 Tabellen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Abfrage über 2 Tabellen


 
acubra
28-08-2005, 17:10 
 
Hallo zusammen

Irgendwie seh ich bei folgender Abfrage nicht mehr so ganz durch. Es geht um eine Auslesung von versch. Abteilungen einer Firma.

Dazu hab' ich eine Tabelle 'abteilungen', in denen alle Abteilungen erfasst sind. Genauso eine Tabelle 'personen', in denen alle Mitarbeiter erfasst sind.

Frage 1: Ist dies so schon mal sinnvoll oder gibt's n' besseren DB-Aufbau?


Tabelle abteilungen
id | abteilungsname | stellenleiter_id | stellenleiter_stv_id

Tabelle personen
id | vorname | nachname

Nun soll auf der Seite der Abteilung XY [abteilungen.abteilungsname] der Stellenleiter mittels Verbindung von abteilungen.stellenleiter_id und personen.id der Name angezeigt werden.

Mein Code sieht mittlerweile so aus:
mysql_query("SELECT
*
FROM personen a
INNER JOIN abteilungen b
ON a.id = b.stellenleiter_id
WHERE b.abteilungsname ='Test-Abteilung'") or die (mysql_error());

Die Seite wird leer ausgegeben und ebenso bringt mysql_error() keinen Fehler. Ist diese Abfrage überhaupt richtig? Ist nämlich die erste Abfrage, in der ich mit Join arbeite....

Besten Dank für die Hilfe

 
heddesheimer
28-08-2005, 18:00 
 
Wenn die id des stellenleiters in abteilungen eingetragen ist, solltest du so Abfragen:

select * from personen a, abteilungen b
where b.stellenleiter_id = a.id
and b.abteilungsname ='Test-Abteilung'

Wenn du auch "leere" (bzw. fehlende) Einträge finden willst, wäre es ein LEFT JOIN:

SELECT *
FROM personen a
LEFT JOIN abteilungen b
ON a.id = b.stellenleiter_id
WHERE b.abteilungsname ='Test-Abteilung'

Siehe auch:
http://www.heddesheimer.de/coaching/left_join.html

Abgesehen davon sollte man "SELECT *" möglichst nicht verwenden, sondern immer eine Liste der gewünschten Spalten angeben.

Gruß Marian

 
acubra
28-08-2005, 18:15 
 
besten dank für deine hilfe. geht ja doch ohne join ;-)


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:57 Uhr.