Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Grupowanie statusów zleceń - statystyki
115750
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 7.06.2004
Skąd: Poznań

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


Zrobiłem sobie mini system do obsługi zleceń serwisowych.
Mam następujące statusy zleceń: nowe, odebrane, w naprawie, oczekuje na decyzję, gotowe do odbioru.
Udało mi sie już zrobić statystyki typu ile jest zgłoszeń z każdym z tych statusów. Zastosowałem poniższy kod:

  1. SELECT T1.id_status, T2.STATUS, count(T1.id_status) AS 'liczba'
  2. FROM orders T1, STATUS T2
  3. WHERE T1.id_status = T2.id
  4. GROUP BY id_status";


Teraz chciałbym zrobić statystykę mówiące ile jest gotowych zleceń a ile nie gotowych.
Gotowe to te ze statusami: odebrane i gotowe do odbioru
Niegotowe to cała reszta.

Macie pomysł na jakieś zgrabne zapytanie SQL najlepiej, żeby w wyniku otrzymać np.
niegotowe 7
gotowe 115

Jak sensownie przerobić powyższy kod?

Na obecną chwilą wymyśliłem coś takiego:

  1. SELECT "gotowe", count(*) AS 'liczba'
  2. FROM orders
  3. WHERE
  4. id_status=5 OR id_status=6 OR id_status=9 OR id_status=10
  5. UNION
  6. SELECT "niegotowe", count(*) AS 'liczba'
  7. FROM orders
  8. WHERE
  9. id_status=1 OR id_status=2 OR id_status=3 OR id_status=4 OR id_status=8


Niestety jak na mój gust to rozwiązanie za ładne nie jest.

Ten post edytował 115750 24.11.2014, 16:39:40
Go to the top of the page
+Quote Post
Forti
post
Post #2





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


w tabeli status utwórz sobie jakieś pole mówiące, że dany status to gotowe czy nie (1 /0 lub false/true) a przy zapytaniu po prostu kolejny warunek:

  1. SELECT T1.id_status, T2.STATUS, count(T1.id_status) AS 'liczba'
  2. FROM orders T1, STATUS T2
  3. WHERE T1.id_status = T2.id
  4. AND T2.jakies_pole = 1
  5. GROUP BY id_status";
  6.  
Go to the top of the page
+Quote Post
115750
post
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 7.06.2004
Skąd: Poznań

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


Cytat(Forti @ 24.11.2014, 18:43:52 ) *
w tabeli status utwórz sobie jakieś pole mówiące, że dany status to gotowe czy nie (1 /0 lub false/true) a przy zapytaniu po prostu kolejny warunek:

Proste i zarazem genialne! Dzięki.
Trochę to zmodyfikowałem:

  1. SELECT T2.ready, count(*) AS 'liczba'
  2. FROM orders T1, STATUS T2
  3. WHERE T1.id_status = T2.id
  4. GROUP BY T2.ready


Ten post edytował 115750 24.11.2014, 16:59:47
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 20:04