Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Liczenie z zakresu dat.
woxala123
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Witam.
Skleiłem sobie taki kod aby zliczał ile dana liczba pojawiła się w bazie danych. I chcę też tak zrobić by zaznaczając 2 daty tylko z tego okresu policzył ilość wystąpień.
Tylko jak robie to takim zapytaniem to cały czas zlicza wszystkie rekordy. Nie wiem jak to ugryżć. Zauważyłem że zlicza tylko ostatnią kolumnę. Czyli musiałbym każdy dodatkowy warunek
AND tah1.datum IN('$a','$b') dodawać do każdej kolumny czy idzie to krócej zrobić jakby dodatkowym selectem.
Oto kod
  1. a = date($_POST['from']);
  2.  
  3. $b = date($_POST['to']);
  4.  
  5. $servername = "localhost";
  6. $username = "xxxt";
  7. $password = "xxx";
  8. $database = "xxx";
  9.  
  10. // Create connection
  11. $conn = new mysqli($servername, $username, $password, $database);
  12.  
  13. // Check connection
  14. if ($conn->connect_error) {
  15. die("Connection failed: " . $conn->connect_error);
  16. }
  17. echo "Connected successfully<br><br>";
  18.  
  19. $sum = 0;
  20. for ($i = 1; $i < 81; $i++) {
  21.  
  22.  
  23. $sql1 = " SELECT COUNT(id) AS pocet FROM `tah1` WHERE cislo1=$i OR cislo2=$i OR cislo3=$i OR cislo4=$i OR cislo5=$i OR cislo6=$i OR cislo7=$i OR cislo8=$i OR cislo9=$i OR cislo10=$i OR cislo11=$i OR cislo12=$i OR cislo13=$i OR cislo14=$i OR cislo15=$i OR cislo16=$i OR cislo17=$i OR cislo18=$i OR cislo19=$i OR cislo20=$i AND tah1.datum IN('$a','$b') ";
  24. var_dump($sql1);
  25. $result1 = $conn->query($sql1);
  26.  
  27. if ($result1->num_rows > 0) {
  28. // output data of each row
  29. $x = 1;
  30.  
  31. while (($row = $result1->fetch_assoc())) {
  32.  
  33. $tah1 = $row["pocet"];
  34.  
  35. $sum += $tah1;
  36.  
  37.  
  38.  
  39. echo " id " . $i . "<br>";
  40. echo " Liczbę " . $i . " Wylosowano razy " . ($tah1) . "<br>";
  41.  
  42. }
  43. }
  44.  
  45. }

Pozdrawiam

Zrobiłem takie zapytanie i okey pokazuje ilość wystąpień liczb w zakresie dat ale czy mozna to ukrócić?
  1. $sql1 = " SELECT COUNT(id) AS pocet FROM `tah1` WHERE cislo1=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo2=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo3=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo4=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo5=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo6=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo7=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo8=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo9=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo10=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo11=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo12=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo13=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo14=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo15=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo16=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo17=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo18=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo19=$i AND tah1.datum BETWEEN '$a' and '$b' OR cislo20=$i AND tah1.datum BETWEEN '$a' and '$b' ";
  2.  


Ten post edytował woxala123 23.09.2017, 13:11:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
woxala123
post
Post #2





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Powiem tak tej opcji nie brałem pod uwagę ale stosując twój zapis
  1. $sql1 = " SELECT COUNT(id) AS pocet, (count(cislo1=$i) as c1, count(cislo2=$i) as c2) FROM `tah1` ";

przy sprawdzeniu
war_dump($sql1);
otrzymuję coś takiego
p2.php:69:string ' SELECT COUNT(id) AS pocet, (count(cislo1=1) as c1, count(cislo2=1) as c2, count(cislo3=1) as c3) FROM `tah1` '
tylko dla przykładu bo wywala 80 takich rekordów z po kolei 1do 80 i w jaki to sposób może pokazywać jakie są pary i ile ich wystąpiło?
Pozdrawiam

Mam teraz jeszcze jedno pytanie jak posortować $tah1 by wyświetlało wyniki od największej do najmniejszej.
Pozdrawiam

Cytat(nospor @ 26.09.2017, 10:39:21 ) *
No a jak dodasz do select kolejne count to nie dziala?

SELECT COUNT(id) AS pocet, count(cislo1=$i) as c1, count(cislo2=$i) as c2, .....

Okey nospor ale jak rozumiesz by ten skrypt zliczał pary liczb. Czy idzie to jakoś rozwinąc. Bo to nie za bardzo działa.
Napisałem takie zapytanie w sql
  1. SELECT concat(cislo1, " ,", cislo2) AS ror, COUNT(*) AS count FROM tah1 GROUP BY ror ORDER BY COUNT(*) DESC

Tylko bym musiał co najmniej na 20 kolumnach zrobić 190 połączeń kolumn by obliczyć wszystkie pary. Czy idzue to bardziej ukrócić.?
Pozdrawiam

Nadal mam pytanie jak posortować $tah1 od najwiekszej do najmniejszej

Ten post edytował woxala123 1.10.2017, 11:42:41
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 22:21