Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]update i count
Forum PHP.pl > Forum > Przedszkole
spok
witam, mam pytanie, pewnie proste dla wtajemniczonych, otóz
mam tabele o nazwie rejestr. W niej pola co i di
zliczam teraz ilosc wystapien w co takich samych wpisow

CODE
SELECT co, COUNT( * )
FROM rejestr
GROUP BY co




i chcialbym wynik ( COUNT) wpisac w poszczegole pola[html] di
tylko nie wiem jak
nospor
Masz chyba coś nie tak ze strukturą....

Z tego co napisałeś, wynika że masz powiedzmy 5 rekordów z wartością co='coś' więc dla pieciu rekordów w tej tabeli z polami co='coś' chcesz w polu di wpisać wartość 5... analogicznie dla innych wartosci pola co. Przecież tu nie ma żadnej logiki...
spok
no fakt masz racje, zle do tego podszedlem.
a jak moznaby zapisac wynik count do pola inne tabeli wg zawartosci pola "co" innej tabeli ?
nospor
Ty napisz wpierw co chcesz osiągnąc, to pogadamy normalnie.
spok
mam nadzieje ze to bedzi ebardziej czytelen

mam dwie talbele
rejest i lista.

lista ma pole "co"
pol o wartosci "a"
pol o wartosci "b"
pol o wartosci "c"
pol o wartosci "d"
pol o wartosci "e"

rejster tez ma pole "co" o takiej samej wartosci
pol o wartosci "a"
pol o wartosci "b"
pol o wartosci "c"
pol o wartosci "d"
pol o wartosci "e"

w tablicy rejestr rekordy z tymi polami moga wystepowac wielokrotnie.
Ilosc ich wystepowania zliczam sobie ta funkcaj
SELECT co, COUNT( * )
FROM rejestr
GROUP BY co
ORDER BY COUNT( * ) DESC

i wychodzi np. ze bylo 16 wystapien rekorod gdzie pole "co" ma wartosc a
10 wystapien rekorod gdzie pole "co" ma wartosc b
200 wystapien rekorod gdzie pole "co" ma wartosc c

jak teraz zapisac te wyniki w tablicy lista
tak aby przy rekordach w ktorych pole "co" zawiera
pol o wartosci "a" bylo zapsiane w innym polu tego rekordu, np wynik : 16
pol o wartosci "b" bylo zapsiane w innym polu tego rekordu, np wynik : 10
pol o wartosci "c" bylo zapsiane w innym polu tego rekordu, np wynik : 200
zbig
Witam!

1. Wypisyswanie zawartosci coun(*) tabeli HTML ( to bylo chyba pierwsze pytanie )

Kod
$res = mysql_query("SELECT COUNT(*) as counter, id, cos FROM rejestr GROUP BY cos ORDER BY COUNT( * ) DESC");
while($row = mysql_fetch_array($res)){
     echo $row["id"]." ".$row["cos"]." ".$row["counter"]."<br>";
}


2.
Jezeli wynik chcesz zapisac w innej tabeli bazy danych - lista, musi ona miec przynajmniej dwa pola : cos i counter
cos musi byc zaindeksowane jako UNIQUE. i teraz

Kod
INSERT INTO lista ( cos, counter )
SELECT m1.cos, m1.counter FROM
(
     SELECT COUNT(*) as counter, cos FROM rejestr GROUP BY cos ORDER BY COUNT( * ) DESC
)m1
ON DUPLICATE KEY UPDATE counter = m1.counter


Napisalem to spontanicznie bez testowania, ale masz przynajmniej jakis zapis , ktory prawdopodobnie pomoze rozwiazac Twoj problem

Pozdrawiam
spok
wszystkko super, dziala, tylko jedno male ale, czysci mi pozostale pola w tabeli lista sad.gif
zbig
Hej !

Nie znam struktury twojej tabeli "lista", dlatego nie mam pojecia jakie pola ci "czysci" i jakie dane byly w tych wyczyszczonych polach wink.gif.
Jezeli wykonasz zapytanie

  1. SHOW CREATE TABLE lista

i
  1. SHOW CREATE TABLE rejestr


i wstawisz tu wynik tych zapytan bede mogl cokolwiek powiedziec

Pozdrawiam
spok
jestem cienki w mysql-u wiec obszedlem temat tak:
utworzyem dodatkowa baze - "podreczna" do ktorej za twoja rada zrobilem zapis zliczenia ) miala tylko dwa pola "co" i "counter".
funkcja jaka mi podeslales robi to wlasciwie.
pozniej do tej wlasciwej (docelowej) bazy poprzez update zapisalem wyniki z bazy "podrecznej":) laczac konkretne pole bazy docelowej z polem "co" bazy podrecznej.
efekt osiagniety choc pewnie dlaoby sie to zrobic jednym poleceniem.

niestety nie wiem jak skonsktruowac polecenie update aby zliczylo one ilosci wystapien danego pola w jednej tabeli i wpisale je jako wynik do drugiej tabeli.
Jakb ys mial triche czasu i checi to nie ma sprawy.
W kazdym razie WIELKI dzieki za pomoc!!!
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.