Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pomoc z zapytaniem
aren
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 1
Dołączył: 8.03.2007

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


  1. id int(),id_klienta int(),id_produktu int(), data_zakupu int()

Jak powinno wyglądać pojedyncze zapytanie do mysql, by ten mi zwrócił listę klientów, którzy zakupili minimum dwa, wcześniej przeze mnie zdefiniowane produkty? Chciałbym w wyniku mieć id_klienta, ilosc_produktow (oraz ew. listę tych produktów).
Go to the top of the page
+Quote Post
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


A to:
  1. id int(),id_klienta int(),id_produktu int(), data_zakupu int()


jest w jednej tabeli?

Jeśli tak to

  1. SELECT id_klienta, sum(id_produktu) FROM tabela GROUP BY id_klienta


Nie jestem pewna, czy zadziała taki warunek
  1. SELECT id_klienta, sum(id_produktu) AS ilosc FROM tabela WHERE ilosc > 1 GROUP BY id_klienta


Jeśli chcesz mieć jeszcze listę produktów to musiałbyś wczytać wszystko i obrabiać pod php.


--------------------
Go to the top of the page
+Quote Post
osiris
post
Post #3





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


  1. SELECT id_klienta, COUNT(*) AS ile_produktow
  2. FROM zakupy WHERE id_produktu IN (1,2,3,4)
  3. GROUP BY id_klienta
  4. HAVING COUNT(*) >= 4


poprawiłem

Ten post edytował osiris 22.07.2008, 14:47:07
Go to the top of the page
+Quote Post
JoShiMa
post
Post #4





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


osiris masz racje moje zapytanie pokaże klientów, którzy kupili conajmniej dwa produkty a nie o to chodziło, ale u Ciebie powinno być chyba >1 a nie >= 4


--------------------
Go to the top of the page
+Quote Post
aren
post
Post #5





Grupa: Zarejestrowani
Postów: 25
Pomógł: 1
Dołączył: 8.03.2007

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


Niestety, ale zwraca mi:
  1. ERROR 1140 (42000): Mixing of GROUP COLUMNS (MIN(),MAX(),COUNT(),...) WITH no GROUP COLUMNS IS illegal IF there IS no GROUP BY clause

Jeszcze jedna sprawa, o której nie wspomniałem. Może się zdarzyć, że klient zakupi kilkakrotnie ten sam produkt, więc zwiększa to sumę ilości produktów, a ja chcę policzyć sumę różnych produktów (tzn. jeśli zakupi jakiś produkt dwa razy, policzy to jako 1 itd.).
Go to the top of the page
+Quote Post
JoShiMa
post
Post #6





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


  1. GROUP BY id_produktu


--------------------
Go to the top of the page
+Quote Post
osiris
post
Post #7





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


  1. SELECT id_klienta, COUNT(DISTINCT id_produktu) AS ile_produktow
  2. FROM zakupy WHERE id_produktu IN (1,2,3,4)
  3. GROUP BY id_klienta
  4. HAVING COUNT(DISTINCT id_produktu) >= 4


Ten post edytował osiris 22.07.2008, 14:45:38
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 Aktualny czas: 20.08.2025 - 11:45