Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Skomplikowane (?) zapytanie
MariuszT
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 9.06.2003
Skąd: Tomaszów Mazowiecki

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


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

Ten post edytował MariuszT 2.11.2006, 15:35:15
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


  1. UPDATE obiekty SET obiekty.ocena_glosow = (SELECT COUNT(*) FROM oceny WHERE id_obiekt = obiekty.id );


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
MariuszT
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 9.06.2003
Skąd: Tomaszów Mazowiecki

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


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
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 Aktualny czas: 22.08.2025 - 04:22