Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Skomplikowane (?) zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
MariuszT
Witam, potrzebuje malej pomocy. Mam dwie tabele:

  1. CREATE TABLE `obiekty` (
  2. `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `ocena_glosow` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 ;
  6.  
  7. CREATE TABLE `oceny` (
  8. `id_obiekt` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  9. `ocena` tinyint(2) UNSIGNED NOT NULL DEFAULT '0',
  10. KEY `id_fotka` (`id_obiekt`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 ;


Usunalem to co sie nam nie przyda smile.gif I tak w pierwszej tabeli sa rekordy z jakimis danymi (obiektami) a w drugiej sa oceny tych danych (kazdy uzytkownik moze ocenic od 1 do 10 dany obiekt).

Oto opis pol:

obiekty:
id - id obiektu
ocena_glosow - ilosc oddanych glosow na ten obiekt czyli jezeli 5 osob na niego glosowalo to bedzie tam liczba 5

oceny:
id_obiekt - id obiektu dla ktorego zostala wystawiona ocena
ocena - ocena smile.gif Od 1 do 10

Wpadlem na pomysl aby napisac sobie oprogramowanie do czyszczenia dysku i bazy danych. Moglo sie tak zdarzyc, ze zostal usuniety jakis rekord z tabeli oceny ale wartosci w polu ocena_glosow nie zostaly poprawione. Chce to naprawic. Oczywiscie mozna narobic wiele zapytan w petlach i bedzie gotowe ale szukam najbardziej optymalnego rozwiazania.

Moje pytanie brzmi:
Czy mozna jednym zapytaniem zalatwic taki update, ze skrypt wybiera obiekty, dla ktorych wartosc pola ocena_glosow jest inna niz stan rzeczywisty (sprawdzajac tabele oceny) i uaktualnia wartosc jezeli jest taka potrzeba? A wiec sprawdza dla kazdego obiektu ile oddano na niego glosow i uaktualnia wartosc w polu ocena_glosow. Chodzi o JEDNO zapytanie. O ile sie oczywiscie da winksmiley.jpg
dr_bonzo
  1. UPDATE obiekty SET obiekty.ocena_glosow = (SELECT COUNT(*) FROM oceny WHERE id_obiekt = obiekty.id );
MariuszT
Echh no tak, przeciez to takie oczywiste.... Kompletnie zapomnialem o tej funkcjonalnosci i kombinowalem z laczeniem tabel, GROUP BY itd. Dziekuje, otworzyles mi mala furtke w glowie winksmiley.jpg
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.