Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zliczanie częstości występowania cyfry w bazie danych
soliniak
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


Witam,

Mam bazę danych która zawiera ok. 1000 rekordów, są to same cyfry w przedziale od 1-30.
W jaki sposób mogę sprawdzić ile razy która cyfra występuje?

Napisałem coś takiego:
  1. <?php
  2. error_reporting( E_ALL );
  3.  
  4. $l_1c = 1;
  5. $l_num = mysql_query("SELECT * FROM db");
  6.  
  7. while($row=mysql_fetch_row($l_num)){
  8.  
  9. $id = $row['0'];
  10. $l_1 = $row['1'];
  11. $l_2 = $row['2'];
  12. $l_3 = $row['3'];
  13.  
  14. if($l_1 == 1){
  15. $l_1c++;
  16. }
  17. }
  18.  
  19. echo $l_1c;
  20.  
  21.  
  22. ?>

I to myślę, że działa, chciałbym natomiast usprawnić, zautomatyzować cały proces, aby miał zasięg od 1 do 30 cyfry.
Tutaj tylko porównuję ile razy występuje cyfra 1.

Z góry dziękuję za wskazówki i pomoc.
Go to the top of the page
+Quote Post
Xelah
post
Post #2





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 12.05.2013
Skąd: Hamburg

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


Cyfry są w przedziale 0 do 9. 30 to liczba a nie cyfra.
Kikla pytań:
1. Checsz wyszukać cyfry czy liczby?
2. Jaki typ mają dane w konkretnych kolumnach?
3. Chcesz wyszukiwać danych z tylko jednej kolumny czy z kilku?
Go to the top of the page
+Quote Post
markuz
post
Post #3





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  1. SELECT cyfra, COUNT(*) FROM cyfry GROUP BY cyfra
Go to the top of the page
+Quote Post
soliniak
post
Post #4





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


Mam 3 kolumny l_1, l_2, l_3. W każdej wymieszane liczby od 1-30.
Typ danych to var_char (rozumiem, że o to chodzi?)
Chciałem z wszystkich kolumn podsumować częstotliwość występowania danej liczby (1-30).
Go to the top of the page
+Quote Post
Xelah
post
Post #5





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 12.05.2013
Skąd: Hamburg

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


Czyli to co napisał markuz.

  1. SELECT `number`, SUM(`total`) FROM (
  2. SELECT `l_1` AS `number`, COUNT(*) AS `total` FROM `test` GROUP BY `l_1`
  3. UNION ALL
  4. SELECT `l_2` AS `number`, COUNT(*) AS `total` FROM `test` GROUP BY `l_2`
  5. UNION ALL
  6. SELECT `l_3` AS `number`, COUNT(*) AS `total` FROM `test` GROUP BY `l_3`
  7. ) AS `dev_table` GROUP BY `number`
Go to the top of the page
+Quote Post
soliniak
post
Post #6





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


Zrobiłem tak:


  1. for($i=1; $i<31; $i++){
  2. $wynik=mysql_query ("SELECT *, SUM(`total`) FROM (
  3. (SELECT `l_2` AS `number`, COUNT(*) AS `total` FROM db WHERE l_2 = $i GROUP BY `l_2`)
  4. UNION ALL
  5. (SELECT `l_1` AS `number`, COUNT(*) AS `total` FROM db WHERE l_1 = $i GROUP BY `l_1`)
  6. UNION ALL
  7. (SELECT `l_3` AS `number`, COUNT(*) AS `total` FROM db WHERE l_3 = $i GROUP BY `l_3`)
  8. ) AS `dev_table` GROUP BY `number`");
  9. $wynik2=mysql_fetch_array($wynik);
  10. echo "<pre>";
  11. echo "$i rekordow jest: $wynik2[total]";
  12. echo "</pre>";
  13. }

Ale niestety nie sumuje mi zawartości kolumn, tylko zatrzymuje się na pierwszym select'cie i sumuje wartości pierwszej kolumny podanej w query...
Halp?

Ten post edytował soliniak 20.05.2015, 08:15:34
Go to the top of the page
+Quote Post
Kaze
post
Post #7





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.08.2010

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


  1. for($i=1; $i<31; $i++){
  2. $wynik=mysql_query ("SELECT SUM(`total`) FROM (
  3. (SELECT COUNT(*) AS `total` FROM `db` WHERE l_1 = $i )
  4. UNION ALL
  5. (SELECT COUNT(*) AS `total` FROM 'db' WHERE l_2 = $i )
  6. UNION ALL
  7. (SELECT COUNT(*) AS `total` FROM 'db' WHERE l_3 = $i )
  8. ) AS `dev_table`");
  9. $wynik2=mysql_fetch_array($wynik);
  10. echo "<pre>";
  11. echo "$i rekordow jest: $wynik2[0]";
  12. echo "</pre>";
  13. };

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: 14.09.2025 - 20:44