Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] zapytanie w bazie danych
dawiddb
post 17.06.2015, 12:24:47
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 17.06.2015

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


Witam.
Na początek przywitam się na forum, tworzę strony WWW dla własnych potrzeb i często borykam się z zapytaniami w bazie danych gdzie jestem bardzo początkujący dlatego tutaj będę chciał poszukać pomocy.


Oto mój problem:

Jak na zrzucie ekranu chciałbym zaktualizować pola PRICE dla ID_SHOP =1 z pola PRICE dla ID_SHOP =14 dodając wartość % lub liczbową.
Chciałbym aby aktualizowało dane tylko kiedy dla obu ID_SHOP występuje identyczne ID_PRODUKT (na zrzucie ekranu mam tylko jeden taki element).



Czy ktoś jest mi w stanie pomóc, naprowadzić na dobry tor?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
mmmmmmm
post 17.06.2015, 14:09:28
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Łączysz tabelę z samą sobą po ID_PRODUCT dając we WHERE warunek na .. długo tłumaczyć... Lepioej napisać:
SELECT * FROM tabela t1 JOIN tabela t2 ON t1.id_product=t2.id_product AND t1.id_shop<>t2.id_shop WHERE t1.id_shop=1 AND t2.id_shop=14
Go to the top of the page
+Quote Post
dawiddb
post 17.06.2015, 19:14:31
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 17.06.2015

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


Dziękuję za pomoc, nie znałem czegoś takiego jak aliasy w SQL.

Na powyższym przykładzie napisałem zapytanie i działa dokładnie tak jak tego potrzebuję:

UPDATE ps_product_shop a
INNER JOIN ps_product_shop b
ON a.id_product=b.id_product AND a.id_shop<>b.id_shop
SET a.price = b.price * 1.3 WHERE a.id_shop=14 AND b.id_shop=1



Rozwijając zapytanie chciałem dodać jeszcze osobne mnożniki w zależności od wartości b.price:

SET a.price = b.price * 1.2 WHERE a.id_shop=14 AND b.id_shop=1 AND b.price > 100

SET a.price = b.price * 1.4 WHERE a.id_shop=14 AND b.id_shop=1 AND b.price < 100


Czy można i jak dodać kilka takich warunków do tego powyższego zapytania czy należy każde zrobić osobnym zapytaniem?

Ten post edytował dawiddb 17.06.2015, 19:39:05
Go to the top of the page
+Quote Post
mmmmmmm
post 17.06.2015, 19:53:25
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


SET a.price = b.price * (case when b.price>100 then 1.2 when b.price<100 then 1.4 else 1 end) WHERE a.id_shop=14 AND b.id_shop=1
Go to the top of the page
+Quote Post
dawiddb
post 3.03.2016, 23:08:10
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 17.06.2015

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


Proszę o pomoc, chciałbym rozwinąć zapytanie o warunek żeby aktualizowało tylko te id_product, które mają odpowiednią wartość id_category ale z innej tabeli (px_produkt).

Ten post edytował dawiddb 3.03.2016, 23:08:51
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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 16:14