Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] Problem ze złożonym zapytaniem
_olo_1984
post
Post #1





Grupa: Zarejestrowani
Postów: 289
Pomógł: 77
Dołączył: 5.08.2006

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


Witam

mam taki problem, chciałbym jednym zapytaniem wyciagnać dane z dwu tabel tak, aby kiedy podbiera mi dane kontrahentów, to potrzebuję też ilość zamówień każdego kontrahenta (z tym nie ma problemu) ale też ilość zamówień o statusie '0' i '1' osobno i razem czyli,
zakładajac ze jakis czlowiek zrobil w sklepie 10 zamowien, z czego 3 jeszcze nie zrealizowano (pole status =0 ) -> ma poakzać wynik 3/10

tabela kontrahenci:
id_kontrahenta | ...

tabela zamowienia:
id | id_kontrahenta | ... | status | aktywne

moje zapytanie:
  1. SELECT k.*, count(z.id) AS ile, (SELECT count(z.id) FROM `sklep_zamowienia` WHERE z.STATUS='0' AND z.id_kontrahenta=k.id_kontrahenta) AS zero FROM `kontrahenci` AS k LEFT JOIN `sklep_zamowienia` AS z ON(k.id_kontrahenta=z.id_kontrahenta) GROUP BY k.id_kontrahenta ORDER BY k.id_kontrahenta";


daje mi wynik taki, że jeżeli człowiek nic nie zamawial to ma 0/0 a jezeli ma chociaz jedno zamowienie to pokazuje max zamowien np 5/1 i tak przy kazdym kto mial jakiekolwiek zamowienia. Mam nadzieje ze nie zamieszalem. Prosze o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




http://nospor.pl/mysql-faq-n25.html#faq-3
gdzie pole1 to twoje pole status
  1. SELECT tabela1.pole1, count(tabela2.id) ilosc,
  2. count(IF(tabela2.pole1=0,1,NULL)) ilosc0,count(IF(tabela2.pole1=1,1,NULL)) ilosc1
  3. FROM tabela1 LEFT JOIN tabela2 ON tabela2.fk_tabela1=tabela1.id
  4. GROUP BY tabela1.id
Go to the top of the page
+Quote Post

Posty w temacie


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: 7.10.2025 - 15:07