Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] Problem ze złożonym zapytaniem
Forum PHP.pl > Forum > Bazy danych > MySQL
_olo_1984
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
Cysiaczek
Przenoszę na Mysql
nospor
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
joebezucha
Jeśli status moze przyjmowac tylko wartosci 0,1 to takie cos powinno zadzialac (nie sprawdzalem:)):

  1. SELECT k.*, COUNT(z.id) AS 'wszystkie', SUM(z.STATUS) AS 'zrealizowane', COUNT(z.id) - SUM(z.STATUS) AS 'niezrealizowane' FROM sklep_zamownienia z LEFT JOIN kontrahenci k ON(k.id_kontrahenta=z.id_kontrahenta) GROUP BY k.id_kontrahenta ORDER BY k.id_kontrahenta


Jesli status moze miec inne wartosci to zrob
  1. SUM(IF z.STATUS > 1, 1, 0) AS 'zrealizowane


Taka mam koncepcje ale nie bylo to sprawdzane nigdzie
Powodzenia
_olo_1984
okej, dzięki za podpowiedź :-)


pozdrawiam
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.