Proszę o radę dot. zapytania.
Mamy tabelę_1 z wykazem spotkań i tabelę_2 z wykazem obecności userów ('1' - tak, '2'-nie)
Chcę jednym zapytaniem otrzymać datę spotkania, ilość obecnych i ilość nieobecnych.
Działa prawidłowo zapytanie
SELECT DISTINCT `date`, (SELECT COUNT(`decision`) FROM `user_has_attempt` WHERE `user_has_attempt`.`decision` = 0 AND `attempts`.`id` = `user_has_attempt`.`attempt_id`) AS 'nie', (SELECT COUNT(`decision`) FROM `user_has_attempt` WHERE `user_has_attempt`.`decision` = 1 AND `attempts`.`id` = `user_has_attempt`.`attempt_id`) AS 'tak' FROM `attempts`, `user_has_attempt`
tyle że nie wygląda mi zbyt optymalnie. Próbowałem zrobić
SELECT `date`, COUNT(A1.`decision`) AS 'nie', COUNT(A2.`decision`) AS 'tak' FROM `attempts` JOIN `user_has_attempt` AS A1 ON `attempts`.`id` = A1.`attempt_id` AND A1.`decision` = 0 JOIN `user_has_attempt` AS A2 ON `attempts`.`id` = A2.`attempt_id` AND A2.`decision` = 1
ale nie działa prawidłowo. Powyższe działa tylko pojedynczo
SELECT `date`, COUNT(A1.`decision`) AS 'tak' FROM `attempts` JOIN `user_has_attempt` AS A1 ON `attempts`.`id` = A1.`attempt_id` AND A1.`decision` = 0
Działa też mix:
SELECT `date`, COUNT(A1.`decision`) AS 'nie', (SELECT COUNT(`decision`) FROM `user_has_attempt` WHERE `decision` = 1) AS 'tak' FROM `attempts` JOIN `user_has_attempt` AS A1 ON `attempts`.`id` = A1.`attempt_id` AND A1.`decision` = 0
Czy można ładniej napisać to działające zapytanie?
Pozdrawiam.