Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ile kazdy klient złożył zamówień?
Forum PHP.pl > Forum > Bazy danych > MySQL
eromero
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
Grzyw
  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.
eromero
Ale jak to zrobić jednym zapytaniem, bez konieczności obrabiania tego phpem...?
sardpal
  1. SELECT COUNT(id) AS amount FROM Cukierki WHERE id IN (val1,val2) AND id_klient=val3
Grzyw
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.
eromero
A tu sa tylko cukierki... A kartofle?
Ma zwracać listę klientów i zsumowane zamówienia klienta z obu tabel.
lucca
  1. <?php
  2. SELECT COUNT(id) AS amount FROM Cukierki, Kartofle WHERE id=id_klienta
  3. ?>
Jarod
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.
eromero
I żeby tę listę uszeregował od klienta, który złożył najwięcej zamówień (cukierki i kartofle razem), do najmniej zamówień.
Jarod
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;
eromero
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.