MYSQL LEFT JOIN avec GROUP BY
🙂
J'ai 2 requêtes, et j'ai besoin de se joindre à eux, j'ai besoin de comparer le temps de travail de l'employé en fonction de l'activité avec des temps de travail total de la société dans la même activité dans une période définie
Première requête est:
SELECT u.login,
a.article,
p.p_article,
(SUM(p.p_going) + SUM(p.p_leaving) + SUM(p.p_working)) AS tottime
FROM pos p,users u, articles a
WHERE u.login = p.p_login
AND REPLACE( u.login, '.', '_' ) = 'users_name'
AND p.p_datum >= '2013-04-09'
AND p.p_datum <= '2013-04-16'
AND p.p_article = a.id
GROUP BY a.article
Et ma deuxième question est:
SELECT a.article,
p.p_article,
(SUM(p.p_going) + SUM(p.p_leaving) + SUM(p.p_working)) AS tottime
FROM pos p, articles a
WHERE p.p_datum >= '2013-04-09'
AND p.p_datum <= '2013-04-16'
AND p.p_article = a.id
GROUP BY a.article
La première requête me renvoie temps de travail total de TRAVAILLEURS regroupées par activités, par exemple:
u.login a.article p.p_article tottime
Ivan Teambuilding 1 3,45
Julie Social_work 2 5,67
La deuxième requête me renvoie temps de travail total de la SOCIÉTÉ regroupées par activités, par exemple:
a.article p.p_article tottime
Teambuilding 1 150
Social_work 2 260
Je veux avoir quelque chose comme cela, donc je peux comparer le temps total de travailleurs par activité avec le temps total de la société d'heures de travail par activité en période spécifique:
u.login a.article p.p_article tottime(worker) tottime(company)
Ivan Teambuilding 1 3,45 150
Julie Social_work 2 5,67 260
Dans le cas des valeurs NULL je voudrais utiliser une JOINTURE GAUCHE. J'étais à la recherche de la solution pendant 3 heures, et tout ce que j'ai essayer ne fonctionne pas, de sorte que toute aide serait appréciée.
OriginalL'auteur enigmaticus | 2013-04-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement joindre les 2 requêtes ensemble comme une paire de les sous-sélections.
Quelque chose comme:-
Cependant ne peux pas vraiment vous donner plus que vous le premier exemple de requête ne semble pas ramener les détails vous dire (seulement revenir 3 colonnes).
EDIT - Avec le corrigé des requêtes
juste ce dont j'avais besoin, génial 🙂 merci beaucoup! 🙂
OriginalL'auteur Kickstart
Le plus simple serait d'utiliser des sous-requêtes (si elles sont en général pas trop efficace, mais ceux
GROUP BY
's peut apporter d'autres solutions difficiles).Quelque chose comme ça devrait le faire:
OriginalL'auteur Dukeling