Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Prośba o skonstruowanie zapytania
ouizzard
post 2.12.2010, 21:20:29
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.11.2010

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


Mam taką oto tabelę do której zrzucam dane w postaci zmiennych. Wpisy w tabeli "value" wyglądają następująco:
g1,g2
g4,g3,g1
g1
g2
g3,g9

Mniej więcej tak, w zależności od dokonanych wyborów w formularzu.
Interesuje mnie zbudowanie zapytania które wśród tych wpisów policzyłoby ilość wystąpień dla każdego g .
Go to the top of the page
+Quote Post
Quadina
post 2.12.2010, 22:27:12
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Zakładając że gX pojawi się raz w jednym wpisie to użyj takiego zapytania:
  1. SELECT COUNT(*) AS licznik FROM TABLE WHERE value LIKE "%gX%"



--------------------
Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
Go to the top of the page
+Quote Post
ouizzard
post 3.12.2010, 08:03:37
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.11.2010

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


Nie do końca o takie zapytanie chodziło.

Interesuje mnie wynik w postaci tablicy

value licznik
g1 15
g2 2
g3 67
gX x
........

i tak dalej. Czyli ilość wystąpień dla danych gX z każdego z rekordów i ich podsumowanie.
W ten sposób zliczę tylko pojedyncze wystąpienia, a mnie interesuje wykonanie zapytania które wypisze mi ilość wystąpień dla każdego gX.
Go to the top of the page
+Quote Post
pablo89pl
post 3.12.2010, 09:49:30
Post #4





Grupa: Zarejestrowani
Postów: 143
Pomógł: 19
Dołączył: 7.09.2009
Skąd: Rzeszów

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


  1. SELECT COUNT(*) AS licznik FROM TABLE WHERE value LIKE "g%" GROUP BY value


PS. w tabeli value jak widze masz po przecinku zapisane wartosci?
To musisz sobie to w takim razie pobrać i w np. w php obrobic...
niestety lezy baza...
Każdy rekord powinien zawierać osobny wpis-wartość..

Ten post edytował pablo89pl 3.12.2010, 09:51:40
Go to the top of the page
+Quote Post
Quadina
post 3.12.2010, 11:36:14
Post #5





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Cytat(pablo89pl @ 3.12.2010, 09:49:30 ) *
PS. w tabeli value jak widze masz po przecinku zapisane wartosci?


Właśnie dlatego napisałem %gX%, tak aby wykonał sobie to kilka razy dla tych swoich kilku g1, g2, g3, g4, ewentualnie można by zrobić takie "mini" subquery, albo jakaś funkcje licząca to wszystko.


@ouizzard daj proszę znać w jakim celu to potrzebujesz zliczać - czy wchodzi w grę przebudowa bazy danych, oraz czy potrzebujesz liczyć dla konkretnego np. g3, czy potrzebujesz wszystkie naraz zsumować i zobaczyć ile jest czego.


--------------------
Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
Go to the top of the page
+Quote Post
ouizzard
post 3.12.2010, 11:49:48
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.11.2010

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


Właśnie tak pablo. Potrzebuję zsumować ilość ogólną oraz ile czego(czyli ile tych gX). Przebudowa raczej już nie wchodzi w grę. W razie co będę robił to na piechotę, czego chciałem uniknąć i zadać jedno pytanie. Założenia bazy były inne na początku. Projekt już wdrożony i nie bardzo chcę już teraz to zmieniać. C
Chodzi tu o zwykłe statystyki ile i jakich opcji zostało wybranych.Może wystarczyloby stworzenie jakieś tabeli która by mi dla każdego G liczyła jego wystąpienia, ale to już zupełnie nie wiem jak wykonać. Nie muszę tego nigdzie wystawiać ani pobierać, interesuje mnie jedynie operacja na bazie aby wynik przekazać że tak powiem "szefowi akcji", a z uwagi że ilość tych G stale rośnie robienie na piechotę jest dość uciążliwe.

Ten post edytował ouizzard 3.12.2010, 11:51:22
Go to the top of the page
+Quote Post
Quadina
post 3.12.2010, 12:09:11
Post #7





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Jak modyfikacja bazy nie wchodzi w grę, to ja bym po prostu zrobił to w taki sposób uruchamiając prosty skrypt. Pętla będzie sprawdzać kolejne gX aż natrafi na 0, więc prawdopodobnie skończą się opcję. Mówiłeś, że opcji wciąż przybywa więc chyba to będzie najlepszy sposób na szybkie sprawdzanie ilości. Musi być bez group by value, ponieważ chcemy liczyć wystąpienia gX, a nie grupy takich samych odpowiedzi.

  1. $arr = array();
  2. $i = 1;
  3. do {
  4. $query = 'SELECT value AS licznik FROM TABLE WHERE value LIKE "%g'.$i.'%" ';
  5. $res = mysql_query($query);
  6. $count = mysql_num_rows($res);
  7. $arr[$i] = $count;
  8. $i++;
  9. } while($count!=0);
  10.  
  11. print_r($arr);


--------------------
Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
Go to the top of the page
+Quote Post
ouizzard
post 3.12.2010, 12:41:07
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.11.2010

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


No i gites. Wielkie dzięki za pomoc. I o to mi chodziło. Wystarczy.
Go to the top of the page
+Quote Post

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: 24.07.2025 - 16:07