Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL]Update tabeli jezeli spełnony zostanie warunek z drugiej tabeli
wrc1000
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.02.2012

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


Witam

Prosze o podpowiedź.

Mam do zrealizowania zadanie zmiany wartości kolumny cena znajdującej się w tabeli prodct ale tylko w jednej kategorii (druga tabela ).

Kategorie zapisane są w 2 tabeli o nazwie category nazwa kolumny id_category
Potrzebuje zmienić ceny w kategori 3.


Tworze zapytanie które jednak zmienia mi wszystkie ceny w całej bazie.


update product SET product.cena =product.cena+5 WHERE category.id_category=3

Gdzie błąd ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
zulus
post
Post #2





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

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


Jaki jest schemat bazy danych (relacji między tymi tabelami)
Go to the top of the page
+Quote Post
wrc1000
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.02.2012

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


Nie wiem dokładnie o co chodzi gdzie to sprawdzę ?



Podpowie ktoś ? Szukam i nic nie mogę znaleźć
Go to the top of the page
+Quote Post
lobopol
post
Post #4





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


W jaki sposób wpisy z tabeli product wiedzą, że są w kategorii o id 3?
Czy w tabeli product masz kolumnę category_id która wskazuje na tabelę category?
Jeżeli tak to
  1. UPDATE product SET cena = cena+5 WHERE id_category=3

używaj bbcode na przyszłość
Go to the top of the page
+Quote Post
wrc1000
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.02.2012

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


Problem w tym ze w tabeli product nie ma kolumny id_category

Jedyna kolumna która występuje w obu tabelach to product_id
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://dev.mysql.com/doc/refman/5.0/en/update.html
Masz tam napisane jak operować w update na kilku tabelach
Cytat
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
Wystarczy, że dostosujesz do swoich tabel i dodasz jeszcze warunek na kategorie 3
Go to the top of the page
+Quote Post
wrc1000
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.02.2012

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


Dzięki za info. Będę testował



Zrobiłem tak ze dodalem to porownanie product_id i dodatkowy warunek ustalajacy kategorie

  1. UPDATE product, category_product SET product.price=(product.price-(product.price*10)/100) WHERE product.id_product=category_product.id_product AND category_product.id_category = 1


I to zadziałało.

i teraz pytanie. Czy zawsze gdy chce zrobic update jednej tabeli w oparciu o dane z drugiej musze dokonac takiego porownania jak w przypadku product_id ?

No i dlaczeog zapytanie

  1. UPDATE product, category_product SET product.price=(product.price-(product.price*10)/100)
  2. WHERE category_product.id_category = 1


robi update dla wszystkich cen z kazdej kategorii. Tak łopatologicznie jeżeli mogę prosić (IMG:style_emoticons/default/smile.gif)

Ten post edytował wrc1000 2.03.2012, 16:19:35
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Czy zawsze gdy chce zrobic update jednej tabeli w oparciu o dane z drugiej musze dokonac takiego porownania jak w przypadku product_id ?
Nie, nie musisz. Teraz musiałeś bo jedno pole nazywało się category_id a tego mysql nie toleruje...... (IMG:style_emoticons/default/wink.gif)

Oczywiście że musisz.

Cytat
robi update dla wszystkich cen z kazdej kategorii.
Bo nie zrobiłeś powiązania miedzy tabelami.

Zrób sobie select z dwóch dabel bez powiązania ich w where a zobaczysz ze dostaniesz zdecydowanie wiecej danych niż oczekiwales.
Go to the top of the page
+Quote Post
wrc1000
post
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.02.2012

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


no tak (IMG:style_emoticons/default/smile.gif) dzieki
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:13