Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak zoptymalizować zapytanie? 2tabele, 2warunki, 3kolumny, dot. raportu obecności na wskazanym spotkaniu
bulimaxiu
post 24.08.2011, 11:12:12
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

Ostrzeżenie: (0%)
-----


Witam.

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
  1. SELECT DISTINCT `date`,
  2. (SELECT COUNT(`decision`) FROM `user_has_attempt` WHERE `user_has_attempt`.`decision` = 0 AND `attempts`.`id` = `user_has_attempt`.`attempt_id`) AS 'nie',
  3. (SELECT COUNT(`decision`) FROM `user_has_attempt` WHERE `user_has_attempt`.`decision` = 1 AND `attempts`.`id` = `user_has_attempt`.`attempt_id`) AS 'tak'
  4. FROM `attempts`, `user_has_attempt`

tyle że nie wygląda mi zbyt optymalnie. Próbowałem zrobić
  1. SELECT `date`, COUNT(A1.`decision`) AS 'nie', COUNT(A2.`decision`) AS 'tak' FROM `attempts`
  2. JOIN `user_has_attempt` AS A1 ON `attempts`.`id` = A1.`attempt_id` AND A1.`decision` = 0
  3. 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
  1. SELECT `date`, COUNT(A1.`decision`) AS 'tak' FROM `attempts`
  2. JOIN `user_has_attempt` AS A1 ON `attempts`.`id` = A1.`attempt_id` AND A1.`decision` = 0

Działa też mix:
  1. SELECT `date`, COUNT(A1.`decision`) AS 'nie', (SELECT COUNT(`decision`) FROM `user_has_attempt` WHERE `decision` = 1) AS 'tak' FROM `attempts`
  2. 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.

Ten post edytował bulimaxiu 24.08.2011, 11:35:05
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 21:30