2013-01-02 4 views
1

J'ai une table qui contient le prénom et le nom des employés de mon entreprise, et un champ qui détermine s'ils travaillent toujours pour l'entreprise.Trouver toutes les lignes sans résultat correspondant

J'ai une autre table avec contient la liste des tâches pour les employés - Il contient également deux champs avec le prénom et le nom de l'employé (- et oui, je sais que ce n'est pas une bonne structure).

Je veux pouvoir trouver tous les employés qui travaillent toujours pour l'entreprise mais qui n'ont aucune tâche utilisant la requête MySQL.

Des idées?

+0

Les deux sont liés à la table une touche ou non –

+0

Apparemment, le prénom et le nom sont leur clé. – AndreKR

+0

Ils sont liés - Avec le nom et le nom de famille. Cela vaut la peine de mentionner que j'ai dans la table des employés environ 43 000 lignes et dans la table des tâches environ 55 000 lignes – Avenger

Répondre

1
SELECT * 
FROM employees 
WHERE still_working_for_company 
AND NOT EXISTS (
    SELECT TRUE 
    FROM tasks 
    WHERE tasks.firstname = employees.firstname 
    AND tasks.lastname = employees.lastname 
) 
+0

Incroyable! Cela fonctionne parfaitement! Merci beaucoup! – Avenger

0

Vous pouvez this--

select * from FirstTable where firstTable.employee='yes' and 
    firstTable.empid IN (select secondTbl.empId where firstTable.empid = secondTbl.empId) 

la requête n'a pas été testé et supposons que votre deuxième table (table de travail) ne contiennent que les données des employés lorsque la tâche est assign.

0

Essayez ceci:

SELECT e.* 
FROM emp e 
LEFT JOIN emptask et ON e.firstname = et.firstname AND e.lastname = et.lastname 
WHERE e.stillworks = 'y' AND et.taskid IS NULL 
GROUP BY e.firstname, e.lastname 
Questions connexes