![]() |
![]() |
![]()
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? |
|
|
![]() |
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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
|
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 16:14 |