Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] zapytanie w bazie danych
Forum PHP.pl > Forum > Przedszkole
dawiddb
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?
mmmmmmm
Łą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
dawiddb
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?
mmmmmmm
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
dawiddb
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).
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.