Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prośba o skonstruowanie zapytania
Forum PHP.pl > Forum > Bazy danych > MySQL
ouizzard
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 .
Quadina
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%"

ouizzard
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.
pablo89pl
  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ść..
Quadina
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.
ouizzard
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.
Quadina
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);
ouizzard
No i gites. Wielkie dzięki za pomoc. I o to mi chodziło. Wystarczy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.