eromero
7.03.2008, 14:59:12
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...?
Grzyw
7.03.2008, 15:07:40
SELECT COUNT(*) FROM Cukierki WHERE id=costam
SELECT COUNT(*) FROM Kartofle WHERE id=costam
Wczytaj wyniki tych dwóch zapytań na poziomie PHP i dodaj je do siebie.
eromero
7.03.2008, 15:10:54
Ale jak to zrobić jednym zapytaniem, bez konieczności obrabiania tego phpem...?
sardpal
7.03.2008, 15:47:47
SELECT COUNT(id) AS amount FROM Cukierki WHERE id IN (val1,val2) AND id_klient=val3
Grzyw
7.03.2008, 16:06:22
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
7.03.2008, 16:06:29
A tu sa tylko cukierki... A kartofle?
Ma zwracać listę klientów i zsumowane zamówienia klienta z obu tabel.
lucca
7.03.2008, 16:32:21
<?php
SELECT COUNT(id) AS amount FROM Cukierki, Kartofle WHERE id=id_klienta
?>
Jarod
7.03.2008, 16:37:00
Cytat(lucca @ 7.03.2008, 16:32:21 )

<?php
SELECT COUNT(id) AS amount FROM Cukierki, Kartofle WHERE id=id_klienta
?>
Piszesz żeby napisać czy pomóc? Bo bez sprawdzania tego zapytania widać że błędne.
eromero
7.03.2008, 16:42:53
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
7.03.2008, 17:05:23
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.
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
7.03.2008, 17:23:01
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