Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> ile kazdy klient złożył zamówień?, Jak podać łączną sumę zamówień każdego klienta na cukierki i kartofle?
eromero
post 7.03.2008, 14:59:12
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.11.2007

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


Tabela Cukierki zawiera zamówienia klientów na cukierki (tylko id klienta i datę zamówienia).
Tabela Kartofle zawiera zamówienia klientów na kartofle(tylko id klienta i datę zamówienia).

Jak podać łączną sumę zamówień każdego klienta na cukierki i kartofle?

Ktoś pomoże...? blinksmiley.gif
Go to the top of the page
+Quote Post
Grzyw
post 7.03.2008, 15:07:40
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


  1. SELECT COUNT(*) FROM Cukierki WHERE id=costam


  1. SELECT COUNT(*) FROM Kartofle WHERE id=costam



Wczytaj wyniki tych dwóch zapytań na poziomie PHP i dodaj je do siebie.


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
eromero
post 7.03.2008, 15:10:54
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.11.2007

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


Ale jak to zrobić jednym zapytaniem, bez konieczności obrabiania tego phpem...?
Go to the top of the page
+Quote Post
sardpal
post 7.03.2008, 15:47:47
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 29.06.2007

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


  1. SELECT COUNT(id) AS amount FROM Cukierki WHERE id IN (val1,val2) AND id_klient=val3
Go to the top of the page
+Quote Post
Grzyw
post 7.03.2008, 16:06:22
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


Cytat(eromero @ 7.03.2008, 15:10:54 ) *
Ale jak to zrobić jednym zapytaniem, bez konieczności obrabiania tego phpem...?


Pomijając fakt, że nie wiem, to wydaje mi się, że dwa proste SQL'e PHP'em będą bardziej wydajne niż złaczenie na poziomie SQL.


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
eromero
post 7.03.2008, 16:06:29
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.11.2007

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


A tu sa tylko cukierki... A kartofle?
Ma zwracać listę klientów i zsumowane zamówienia klienta z obu tabel.
Go to the top of the page
+Quote Post
lucca
post 7.03.2008, 16:32:21
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 2
Dołączył: 7.03.2008

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


  1. <?php
  2. SELECT COUNT(id) AS amount FROM Cukierki, Kartofle WHERE id=id_klienta
  3. ?>


Ten post edytował lucca 7.03.2008, 16:32:37
Go to the top of the page
+Quote Post
Jarod
post 7.03.2008, 16:37:00
Post #8





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(lucca @ 7.03.2008, 16:32:21 ) *
  1. <?php
  2. SELECT COUNT(id) AS amount FROM Cukierki, Kartofle WHERE id=id_klienta
  3. ?>

Piszesz żeby napisać czy pomóc? Bo bez sprawdzania tego zapytania widać że błędne.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
eromero
post 7.03.2008, 16:42:53
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.11.2007

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


I żeby tę listę uszeregował od klienta, który złożył najwięcej zamówień (cukierki i kartofle razem), do najmniej zamówień.
Go to the top of the page
+Quote Post
Jarod
post 7.03.2008, 17:05:23
Post #10





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


To zapytanie daje wynik taki jaki chcesz osiągnąć. Warunek: Klient który złoży co najmniej jedno zamówienie na cukierki musi złożyć co najmniej jedno na kartofle. Jeśli to Ci nie odpowiada to dwa zapytania i dodawaj sobie w php.



  1. SELECT DISTINCT c_id AS numer_zamowienia, (T1.c_suma + T2.k_suma) AS suma FROM ((SELECT id AS c_id, COUNT(id) AS c_suma FROM cukierki GROUP BY id) AS T1, (SELECT id AS k_id, COUNT(id) AS k_suma FROM kartofle GROUP BY id) AS T2) GROUP BY c_id ORDER BY suma DESC;


Ten post edytował Jarod 7.03.2008, 17:17:51


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
eromero
post 7.03.2008, 17:23:01
Post #11





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.11.2007

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


Dzięki za pomoc. Wczystko udało mi się jednak zamknąć w jednym zapytaniu. Problem z wartościami NULL usunąłem IFami.

SELECT

if(cuk.cid>0, cuk.cid,

if(kar.kid>0, kar.kid, 0

)) AS id,

if(cuk.cile>0, cuk.cile, 0)+

if(kar.kile>0, kar.kile, 0)

AS razem

FROM

(SELECT kartofle.id AS kid, count(kartofle.id) AS kile

FROM kartofle

GROUP BY kartofle.id) AS kar

LEFT JOIN

(SELECT cukierki.id AS cid, count(cukierki.id) AS cile

FROM cukierki

GROUP BY cukierki.id) AS cuk

ON cuk.cid=kar.kid

ORDER BY razem DESC
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: 27.04.2024 - 20:08