Hallo !
Tabelle A enthält Personendaten (sagen wir ID, Name, Gehalt, Zimmer) und in Tabelle B sind diesen Personen verschiedene Aufgaben (mit eintsprechenden Zusatzdaten) zugeordnet (also für unser Beispiel PersonenID, Name, Status, Deadline). Abgesehen von ID undn PersonenID
Was war jetzt die EintragsID von der Du anfangs sprachst ?
Ich seh in B einen Fremdschluessel PersonenID der wohl auf A(ID) verweist.
Uebrigens - 'ID' ist nicht wirklich gut 'id' ist besser damit's zwischen den SQL-Ausdruecken in Grosschrift noch auffaellt.
können alle diese Felder auch den wert "NULL" haben.
Dann ist der Fremschluessel aus B also NOT NULL ?
SELECT COUNT(*)
Muss das sein ? COUNT(a.ID) muesste doch auch reichen, oder ?
as cGesamt, COUNT(b.Name) as cName,
...
Die '...' wuerde ich gern mal sehen
RIGHT JOIN B as b ON b.PersonenID = a.ID WHERE a.gehalt > 1000 AND b.Status >= 2
Wieso RIGHT [OUTER] JOIN ?
So ziehst Du alle B, egal ob sie A referenzieren oder nicht.
Da der FK in B aber NOT NULL ist, ergibt das einen INNER JOIN.
Wie gesagt, der JOIN braucht deutlich zu lange.
Wie stelltst Du das fest ? Koennte auch an der WHERE clause liegen.
Mach mal ein EXPLAIN und poste das bitte.
Sind das MyISAM oder InnoDB Tabellen ?
Gruesse
Holger
Aus dem Perl Styleguide:
"Choose mnemonic identifiers. If you can't remember what mnemonic means, you've got a problem."