Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Statystyka wyjazdów.
kopek
post
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 24.02.2008
Skąd: Łódź

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


Mam tabelę, w której są informacje na temat wyjazdów pracowników. Chciałbym stworzyć statystykę, która będzie wyświetlać kto ile miał wyjazdów (w rzeczywistości będzie to ilość rekordów w bazie danego pracownika). Zastanawiam się, czy da się to zrobić w jednym zapytaniu, czy muszę najpierw pobrać tą ilość od każdego pracownika i zapisać w jakiejś dodatkowej tabeli, a później odczytać tą tabelę sortując sobie po ilości? Proszę o komentarz, czy mój pomysł z dodatkową tabelą, zmierza w dobrym kierunku.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wystarczy użyc grupowania.

GROUP BY oraz COUNT
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Z 15 minut temu odpowiadałem na podobny temat (nie lubisz szukajek?). Może tak:
  1. SELECT rekord, count(rekord) AS ile
  2. FROM tabela
  3. GROUP BY rekord
  4. ORDER BY ile DESC
Go to the top of the page
+Quote Post
kopek
post
Post #4





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 24.02.2008
Skąd: Łódź

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


Spróbowałem coś takiego ale wyświetla mi bład:
Warning: mysql_fetch_array() expects parameter...
  1. connection();
  2. $sql = "SELECT nazwa, count(nazwa) AS ile FROM delegacja GROUB BY nazwa ORDER BY ile DESC";
  3. $query=mysql_query($sql);
  4. ?>
  5. <table>
  6. <tr>
  7. <td>
  8. Imię i nazwisko.
  9. </td>
  10. <td>
  11. Ilość wyjazdów.
  12. </td>
  13. </tr>
  14. <?
  15. while ($wynik=mysql_fetch_array($query)){
  16. ?>
  17. <tr>
  18. <td>
  19. <?echo $wynik['nazwa']?>
  20. </td>
  21. <td>
  22. <?echo $wynik['ile'];?>
  23. </td>
  24. </tr>
  25. </table>
  26. <?
  27. }
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Bo masz blad zapytania.
Jak sobie radzic z bledami zapytania masz napisane tu:
Temat: Jak poprawnie zada pytanie
Go to the top of the page
+Quote Post
kopek
post
Post #6





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 24.02.2008
Skąd: Łódź

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


Miałem GROUB zamiast GROUP... taka literówka ale zastosowanie mysql_error() pomogło zlokalizować problem. :-)

Chciałem jeszcze zawęzić wyświetlanie poprzez podanie zakresu czasowego i kiedy dodałem na sztywno w zapytaniu:
  1. $sql = "SELECT nazwa, count(nazwa) AS ile FROM delegacja WHERE data_start BETWEEN '2012-02-01' AND '2012-02-10' GROUP BY nazwa ORDER BY ile DESC";

to działa i wyświetla poprawnie, ale kiedy zrobiłem tak:
  1. $sql = "SELECT nazwa, count(nazwa) AS ile FROM delegacja WHERE data_start BETWEEN 'data1' AND 'data2' GROUP BY nazwa ORDER BY ile DESC";

gdzie data1 i data2 są pobierane z formularza (poprawnie bo echo je wyświetla) to niestety żaden rekord się nie wyświewtla.

Ten post edytował kopek 10.02.2012, 12:50:04
Go to the top of the page
+Quote Post
zaworek
post
Post #7





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.06.2006

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


Ja bym zmienił na

  1. $sql = "SELECT nazwa, count(nazwa) AS ile FROM delegacja WHERE data_start BETWEEN '$data1' AND '$data2' GROUP BY nazwa ORDER BY ile DESC";
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
poprawnie bo echo je wyświetla
Tak?? To zrób sobie echo tego:
echo $sql;
(IMG:style_emoticons/default/tongue.gif)

A na przyszłość czytaj uważnie linki, które dostajesz - bo tam to wszystko jest wyjaśnione
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: 23.08.2025 - 20:33