• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przeliczanie i wyciąganie najmniejszej ceny z tabeli

Object Storage Arubacloud
+1 głos
540 wizyt
pytanie zadane 2 marca 2016 w SQL, bazy danych przez Adam Nowicki Obywatel (1,600 p.)

Cześć, jako iż jestem dosyć słaby w sql potrzebuję pomocy. Załóżmy, że mam dwie tabele:

Produkt:

ID

Nazwa

1

Monitor a

2

Monitor b

3

Monitor c

4

Monitor d

 Oraz NajnizszaOferowanaCena

ID

ProduktID

Cena

Waluta

Dostawca

Ilosc

1

1

100

1

Xkom

0

2

1

120

1

komputronik

15

3

1

20

2

Ebay

10

4

3

160

1

Xkom

15

5

3

25

2

Ebay

15

 Gdzie waluta: 1- pln, 2 - euro

I teraz chcę napisać zapytanie, które najpierw w NajnizszaOferowanaCena gdy waluta = 2 przeliczy sobie ceny po kursie np 4, później dla danego produktu wybierze najniższą oferowaną cenę z warunkiem, że ilość > 0. Czyli wynikiem zapytania miałoby być:

ID produktu

Nazwa

IdNajnizszejOferty

NajnizszaCena

Dostawca

Ilosc

1

Monitor a

3

80

ebay

10

3

Monitor c

5

100

ebay

15

 Jak to ugryźć?

3 odpowiedzi

+1 głos
odpowiedź 2 marca 2016 przez Janusz92 Bywalec (2,150 p.)
wybrane 8 marca 2016 przez Adam Nowicki
 
Najlepsza
SELECT id, produktid, waluta, dostawca, ilosc, cena AS cena_oryginalna, IF (waluta = 2, cena * 4, cena) AS przeliczona FROM NajnizszaOferowanaCena

Może to będzie pomocne.

Edit:

SELECT p.id AS produkt_id, c.dostawca, p.nazwa, c.id AS cena_id, c.produkt_id, c.waluta, c.cena AS cena_oryginalna, c.ilosc, IF (c.waluta = 2, c.cena * 4, c.cena) AS przeliczona
FROM NajnizszaOferowanaCena c
JOIN produkt p ON p.id = c.produkt_id
WHERE c.ilosc > 0
ORDER BY przeliczona

Wspomniałeś jeszcze o wynikach dla konkretnego produktu. W tym celu dodaj warunek do WHERE po AND "p.id = x"

komentarz 8 marca 2016 przez Adam Nowicki Obywatel (1,600 p.)
Dzięki wielkie :)
0 głosów
odpowiedź 2 marca 2016 przez Frendom Pasjonat (18,900 p.)
SELECT produkt.nazwa, (cena.cena *4) FROM produkt, cena WHERE cena.produkt_id = produkt.id AND cena.waluta = 2 AND cena.ilosc > 0

Ja zapisalbym to w taki sposob, przy czym tabela cena to odpowiednik twojej tabeli NajnizszaOferowanaCena. W Selecie wyciagasz sobie tylko to co chcesz. Do laczenia tabel mozesz uzyc INNER JOIN, chociaz ja jakos jestem zwolennikiem laczenia tabel w WHERE

komentarz 2 marca 2016 przez Adam Nowicki Obywatel (1,600 p.)
Ale ja nie chcę wyciągać tylko ceny gdzie waluta jest = 2. Po drugie nigdzie nie wyciągasz najniższej. Chcę , z tabeli NajnizszaOferowanaCena wyciągnąć najniższą cenę PLN. W krokach widzę to tak:
- w tabeli NajnizszaOferowanaCena bierze wszystkie rekordy gdzie id produktu = id z tabeli nazwa

- analizuje rekordy, jeśli waluta = 2, przelicza cene razy kurs, i ma wszystkie te rekordy gdzie waluta = 1 i 2 w cenie pln

- wyciąga najniższą cenę

Dalej tylko połączyć informację, ale to umiem
0 głosów
odpowiedź 2 marca 2016 przez Wojtek Wiedeński Bywalec (2,460 p.)

Jeżeli nie miałeś styczności z SQL warto się z nim zaznajomić bardziej, bo jest wykorzystywany wszędzie obecnie. A więc fajnym narzędziem do nauki jest ta strona:

http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

Są tam do dyspozycji utworzone na stałe tabele, które można modyfikować. Na bazie tych tabel stworzyłem zapytanie, które poczęści odpowie na Twoje pytanie, ale sam będzie musiał napisać swoje zapytanie.

SELECT *
FROM OrderDetails INNER JOIN Products 
ON OrderDetails.ProductID = Products.ProductID
WHERE Price>50;

W powyższym przykładzie zostały złączone 2 tabele. Zachęcam do przerobienia kursu, który także oferuje http://www.w3schools.com/. 

komentarz 2 marca 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
A ja zachęcam do przeczytania tematu o w3schools: http://forum.pasja-informatyki.pl/34559/w3schools-nie-szerzmy-falszywej-propagandy

Do tego używanie * w zapytaniach jest słabe.
komentarz 2 marca 2016 przez Wojtek Wiedeński Bywalec (2,460 p.)
Kolego Arku,

kolega zapytał się o SQL i ten kurs nie ma przekłamań. Natomiast co do innych treści nie wypowiadam się, bo nigdy bym z nich nie skorzystał, bo wiem jaką mają reputację.

Odnośnie * dałem wędkę, a kolega Frendom niech się dowie w ogóle co * znaczy :-)

Nie jestem z SQL expertem, ale pomagam jak mam jakąkolwiek wiedzę.

Piona!
komentarz 2 marca 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)

Kolego, zobacz co jest u nich w stopce również przy kursie SQL - dość dziwny zapis, cytując z wpisu Comandeera:

piszemy niekoniecznie dobre rzeczy, byleby się łatwo czytało

Lekko słabo ;) A kolega Frendom nie wiem co ma do tego, przecież on tylko udzielił odpowiedzi i nie użył w taki sposób *

komentarz 2 marca 2016 przez Wojtek Wiedeński Bywalec (2,460 p.)
Chodziło mi o autora wpisu. Pomyłka
1
komentarz 2 marca 2016 przez efiku Szeryf (75,160 p.)
http://www.sqlinsider.pl/2015/03/7-powodow-dlaczego-nie-powinno-sie.html Może ktoś się czegoś nauczy jak tu kiedyś wejdzie :)
komentarz 2 marca 2016 przez Adam Nowicki Obywatel (1,600 p.)
Umiem napisać JOINa, więc niestety ta odpowiedź mi nic nie daje

Podobne pytania

0 głosów
0 odpowiedzi 502 wizyt
pytanie zadane 13 września 2016 w SQL, bazy danych przez heartagram Obywatel (1,770 p.)
0 głosów
1 odpowiedź 656 wizyt
pytanie zadane 20 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)
0 głosów
1 odpowiedź 2,832 wizyt

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...