Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Jak wyświetlić 10 rekordów o najwyższej liczbie?, odwołanie do dwóch tabel mysql.
casperii
post 8.11.2015, 19:20:26
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Panowie mam 2 tabele jedna to produkty druga to zakup:

produkty:
id, nazwa_produktu

zakup:
id, produkt_id, ilosc.

Teraz chciałbym wyświetlić na liście 10 produktów które najczęściej są kupowane.
zakup.produkt_id = produkty.id

Jak wykonać poprawnie takie zapytanie.

Drugie pytanie w jaki sposób można by było wykonać procentowo przy każdym produkcie zainteresowaniem zakupem ?
Go to the top of the page
+Quote Post
Damonsson
post 8.11.2015, 19:54:20
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Coś w tym stylu powinno zadziałać
  1. SELECT nazwa_produktu, SUM(ilosc) AS ilosc, (SUM(ilosc) / (SELECT SUM(ilosc) FROM zakup)) * 100 AS percentage FROM zakup
  2. JOIN produkty ON zakup.produkt_id = produkty.id
  3. GROUP BY zakup.produkt_id
  4. ORDER BY ilosc DESC
  5. LIMIT 10;


Ten post edytował Damonsson 8.11.2015, 20:05:44
Go to the top of the page
+Quote Post
casperii
post 14.11.2015, 19:33:09
Post #3





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Dzięki @Damonsson za pomoc.

A jeszcze mam pytanie jak zsumować łączną kwotę produktów 1 zapytaniem i czy jest to możliwe.
tabela zakup (cena, waluta). Pole waluta przyjmuje wartości PLN, EUR, DOL

  1. SELECT SUM(cena) FROM zakup WHERE waluta = 'PLN'


Łączna kwota:
100 zł
150 euro
200 dolarów


Druga sprawa tabela zakup zawiera pole ilosc gdzie podana jest ilosc zakupowa. Czasem może tam być więcej niż 1. Chciałbym w przyszłości wyciągać średnią cenę zakupową za produkt ale nie mam pomysłu jak? Samo wyświetlenie to chyba już bym musiał działanie zrobić w pętli while $cena/$ilosc ? Ale jak wyliczyć średnią ze wszystkich rekordów? Dodatkowym utrudnieniem jest że cena jest w 3 walutach :-) czyli 3 x średnia.


Wymyśliłem sobie jeszcze jeden sposób , ale nie wiem czy nie przekombinowany , stworzenie kolejnej tabeli waluty (waluta, kurs, data).
Następnie curlem bym codziennie dodawał do bazy średni kurs dla DOL , EUR (tu mile widziane rady skąd pobierać).

Przy zapytaniu mysql SUM(cena) from zakup musiałbym dodać join waluty i porównywać date zakupu z datą kursu oraz walute z krajem.

Co o tym myślicie , który sposób lepszy?

Ten post edytował casperii 14.11.2015, 20:38:29
Go to the top of the page
+Quote Post
Tomplus
post 14.11.2015, 20:39:30
Post #4





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Kod
SELECT SUM(cena) FROM zakup WHERE GROUP BY (waluta)
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: 14.08.2025 - 14:43