2 Tabellen abrufen - Ergebnis verfälscht

Watusimann

Erfahrenes Mitglied
Hallo Gemeinde

Ich versuche gerade einen Dienstplaner zu erstellen und habe 2 relevante Tabellen.
personal
dort befindet sich eine Zeile"wanumber" und "aktive", welche 0 beinhaltet wenn der Mitarbeiter inaktiv ist.
In der zweiten Tabelle dienstplan befindet sich ebenfalls die "wanumber"

Nun soll die wanumber aus der Tabelle dienstplan abgerufen werden und mit der Selektion in der personal-Tabelle festgestellt werden, ob dieser inaktiv ist, um den Mitarbeiter nicht im Ergebnis zu berücksichtigen.
Code:
$anwesend=mysql_query("SELECT 
personal.wanumber,
dienstplan".$year."_".$getfiliale.".wanumber,
personal.aktive,
dienstplan".$year."_".$getfiliale.".datum AS datum,
dienstplan".$year."_".$getfiliale.".dienst AS dienst,	
dienstplan".$year."_".$getfiliale.".workstation		
FROM 
personal, dienstplan".$year."_".$getfiliale." 
WHERE 
(personal.wanumber = '".$mitarbeiter[$r]."')
AND
(WEEK(dienstplan".$year."_".$getfiliale.".datum,1)=". ($kw+$weeks).") 
AND 
(YEAR(dienstplan".$year."_".$getfiliale.".datum)=". $year .")
AND
(WEEKDAY(dienstplan".$year."_".$getfiliale.".datum)=". ($r) .")
AND				
(dienstplan".$year."_".$getfiliale.".dienst !=0)
AND
(dienstplan".$year."_".$getfiliale.".dienst !=4)
AND
(dienstplan".$year."_".$getfiliale.".dienst !=5)
AND
(personal.aktive !='0')
AND
(personal.office='".$getfiliale."')
										
". Abt($getabteilung,$year,$getfiliale)."
									
ORDER BY 										dienstplan".$year."_".$getfiliale.".datum ASC") or die(mysql_error());
													
			print  mysql_num_rows($anwesend) ." / ". $counter ."\n";

Er schmeißt mir aber auch die inaktiven mit ins Ergebnis und nun bin ich mit meinem Latein am Ende :(

Es wäre schön, wenn mir jemand unter die Arme greifen könnte und mir auch erklärt was ich da falsch mache.

Danke schonmal im Voraus
bestRegards
 
Welcher Datentyp ist Aktive ?

Versuch es mal mit
SQL:
personal.aktive not like '0'
 
Zuletzt bearbeitet von einem Moderator:
In der Tabelle personal ist die Spalte aktive mit 0 oder 1 deklariert.
0 = inaktiv
1 = aktiv
hat den Hintergrund das bsp.weise Mitarbeiter von Leihfirmen entsprechend der Saison-Spitzen wiederkommen oder gehen.

NOT LIKE '0' ... hat den gleichen Effekt :( Ich belese mich gerade über JOIN Syntax und bin mittlerweile ziemlich verwirrt, aber anscheinend liegt ich da garnicht so falsch.
 
Hi,

Ich belese mich gerade über JOIN Syntax und bin mittlerweile ziemlich verwirrt, aber anscheinend liegt ich da garnicht so falsch.

Das denke ich auch. ;)
Über welche Felder sind Deine Tabellen überhaupt verknüpft? wanumber?
Außerdem solltest Du keinen PHP-Code posten, der SQL generiert, sondern die generierte Abfrage (wir kennen schließlich den Inhalt Deiner Variablen nicht).

LG
 
Also mit JOIN LEFT hat es funktioniert
Code:
SELECT 
personal.wanumber,
personal.aktive,
personal.workstation,
dienstplan2008_1.wanumber AS wa,
dienstplan2008_1.datum AS datum,
dienstplan2008_1.dienst AS dienst,	
dienstplan2008_1.workstation	
FROM
dienstplan2008_1
LEFT JOIN
personal
ON
personal.wanumber = dienstplan2008_1.wanumber ....

Was meinst du mit Verknüpfung? Die Tabellen haben jeweils die Spalte wanumber (hoffe das ist die Antwort auf deine Frage)
 
Zurück