• 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

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
+1 głos
257 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,130 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 (284,760 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 (284,760 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,420 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 161 wizyt
pytanie zadane 13 września 2016 w SQL, bazy danych przez heartagram Obywatel (1,770 p.)
0 głosów
1 odpowiedź 493 wizyt
pytanie zadane 20 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)
0 głosów
1 odpowiedź 2,346 wizyt

89,727 zapytań

138,332 odpowiedzi

309,340 komentarzy

59,649 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 429p. - Argeento
  2. 427p. - nidomika
  3. 396p. - Mikbac
  4. 392p. - ssynowiec
  5. 390p. - Łukasz Eckert
  6. 387p. - TheLukaszNs
  7. 386p. - rucin93
  8. 382p. - Marcin Harasimowicz
  9. 382p. - Michal Drewniak
  10. 378p. - JMazurkiewicz
  11. 373p. - tokox
  12. 367p. - Jarosław Roszyk
  13. 362p. - adrian17
  14. 359p. - overcq
  15. 350p. - Mawrok
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...