Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Najczęściej kupowany?
termin
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 13.05.2003
Skąd: Wrocław

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


Witam, kombinuje na rozne sposoby i za cholere nie chce pokazać proawidlowej wartosci.

Mam 2 tabele. ZAMOWIENIA i ZAMNR
[ZAMOWIENIA]
id_zamow
data
reszte rzeczy pomijam

[ZAMNR]
idprod
idzam //tutaj klucz obcy do id_zamow
nazwa
ile

Chce aby w zależnosci od wybranego zakresu dat w tabeli ZAMOWIENIA wybral mi 1 produkt z tabeli ZAMNR ktory byl najczęściej kupowany i najwięcej sprzedawany gdyby nie było to zależne od wartosci 'ile' to bym sobie poradzil, ale tak to chyba w jednym zapytaniu nie da sie tego zrobic. Przykładowo, mam 3 zamowienia:

zamowienia_1:
koperta biala, ile=5
teczka_czerwona, ile=2
zeszyt, ile=1

zamowienie_2:
zeszyt, ile=1
koperta_biala, ile=1;

zamowienie_3:
zeszyt, ile=2
gumka, ile=1

Jaka widać zeszyt był najczęściej kupowany, a koperta_biala była byla najwięcej sprzedawana.

Ktos ma jakis pomysl jak to ugryźć?

Ten post edytował termin 10.01.2007, 21:03:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


1. Czemu trzymasz nazwe produktu i jego ID w pozycji zamowienia [ZAMNR]? Wystarczy ID + join

2. nazwy kolumn, tabel masz, hmm, nieintuicyjne, co chwile musze przewijac ekran i sprawdzac jak zapisujesz nazwy pod zam_id, zamowienie_id, id_zam, idzam czy inaczej (ja stosuje zamowienie_id)

3.

SQL testowany w glowie, jakbys podal skrypt tworzacy tabele + troche danych (INSERTY) to bylo by mi latwiej.

Przedmioty ktore znalazly sie w najwiekszej ilosci zamowien (ilosc zamowien z danym przedmiotem):
SELECT COUNT( * ) AS ile
FROM ZAMNR
GROUP BY idprod ORDER BY ile DESC

zeby wybrac jeden to
... LIMIT 1

zeby wybrac z przedzialu czasowego to trzeba dolaczyc Zamowienia i ograniczyc ich date
SELECT COUNT( * ) AS suma
FROM ZAMNR
JOIN zamowienia z ON z.id = ZAMNR.idzam
WHERE z.data BETWEEN '2006-01-01' AND '2006-12-31'
GROUP BY idprod ORDER BY suma DESC


Przedmioty, ktorych najwiecej sprzedano (w sztukach)
SELECT SUM( ile ) suma -- zsumuje wartosci kolumny 'ile'
FROM ZAMNR -- z zamowien
JOIN zamowienia z ON z.id = ZAMNR.idzam
WHERE z.data BETWEEN '2006-01-01' AND '2006-12-31'
GROUP BY idprod ORDER BY suma DESC -- dla kazdego z produktow

dziala?
Go to the top of the page
+Quote Post
termin
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 13.05.2003
Skąd: Wrocław

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


AD 1)
nazwę produktu trzymam tylko po to bo bedzie to potrzebne do historii zamowien, ponieważ w tabeli gdzie znajduja się wszystkie towary jest tendencja że po jakimś czasie produkty zostana usunięte i zastąpione innymi, np zeszyt po pol roku, bedzie zastąpionym nowym produktem np. zeszyt 60kartek itd. chyba ze chodziło Ci o cos innego?

AD 2)
To fakt bede musiał nad tym popracować i wszystko ujednolicić, ja tez przewijam ekran (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

AD 3)
Wszystko działa lecz małe zmiany trzeba bylo wprowadzić:

SELECT nazwa, COUNT(*) AS suma
FROM ZAMNR
JOIN zamowienia z ON z.id_zamow = ZAMNR.idzam
WHERE z.data BETWEEN '2006-01-01' AND '2006-12-31'
GROUP BY idzam ORDER BY suma DESC LIMIT 1

Przedmioty, ktorych najwiecej sprzedano (w sztukach)
SELECT nazwa, SUM(ile) suma
FROM ZAMNR
JOIN zamowienia z ON z.id_zamow = ZAMNR.idzam
WHERE z.data BETWEEN '2006-01-01' AND '2006-12-31'
GROUP BY nazwa ORDER BY suma DESC LIMIT 1

Bardzo Ci dziękuję, poszerzyłeś moją wiedzę na temat SQL-a (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Co do 3) --> patrz punkt 2) bo szlak mnie trafial od przewijania wiec napisalem tak zebys zrozumial kod i naniosl poprawki

Cytat
nazwę produktu trzymam tylko po to bo bedzie to potrzebne do historii zamowien, ponieważ w tabeli gdzie znajduja się wszystkie towary jest tendencja że po jakimś czasie produkty zostana usunięte i zastąpione innymi, np zeszyt po pol roku, bedzie zastąpionym nowym produktem np. zeszyt 60kartek itd. chyba ze chodziło Ci o cos innego?


Nie powinno sie zastepowac produktow. Produkt o ID=123 teraz jak i za 10 lat powinien byc tym samym produktem.
Mozesz to rozwiazac przez dodanie kolumny 'usuniety' -- przez co starego produktu nie bedzie dalo sie kupic, i bedziesz mogl sie do niego odwolac po ID z zamowienia.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:57