![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.05.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
kolejny dzień ślęczenia nad zapytaniem i nic. Wątek http://forum.php.pl/viewtopic.php?t=6692 przestudiowałem dość szczegółowo i nie potrafiłem zrobić swojego zapytania. Mam 3 table: agenci, firmy, produkty. Chcę zliczyć ile każdy agent pozyskał produktów i firm. Nie będę rozpisywał poszczególnych atrybutów dla każdej z tabel. Wszystko widać z zapytań. Może jednak nie widać, bo coś się nie mogę doczekać odpowiedzi. Więc powiem tylko te najważniejsze: agents_pl: agent_id firms_pl_transact: firm_id, agent_id products_pl_transact: product_id, firm_id, agent_id. Zapytanie o liczbę firm wygląda tak i działa o.k.: [sql:1:b467487e3b] select a.firstname 'Imię', a.lastname 'Nazwisko', count(f.agent_id) as 'Liczba firm' from agents_pl a left join firms_pl_transact f on (a.agent_id = f.agent_id) WHERE a.active_i = 1 AND a.agent_id not in (1, 2) group by a.agent_id order by 'Liczba firm' desc, a.lastname; [/sql:1:b467487e3b] Analogicznie zapytanie o liczbę produktów wygląda tak i działa o.k.: [sql:1:b467487e3b] select a.firstname 'Imię', a.lastname 'Nazwisko', count(p.agent_id) as 'Liczba produktów' from agents_pl a left join products_pl_transact p on (a.agent_id = p.agent_id) WHERE a.active_i = 1 AND a.agent_id not in (1, 2) group by a.agent_id order by 'Liczba produktów' desc, a.lastname; [/sql:1:b467487e3b] No i teraz potrzebuję zapytania, które da mi sumę tych firm i produktów. Niestety w tej postaci, jak poniżej, dostaję co prawda jakieś wyniki, ale są bzdurne. [sql:1:b467487e3b] select a.firstname 'Imię', a.lastname 'Nazwisko', count(p.agent_id) + count(f.agent_id) as 'Liczba umów' from agents_pl a left join products_pl_transact p on (a.agent_id = p.agent_id) left join firms_pl_transact f on (a.agent_id = f.agent_id) WHERE a.active_i = 1 AND a.agent_id not in (1, 2) group by a.agent_id order by 'Liczba umów' desc, a.lastname [/sql:1:b467487e3b] Help me. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 19.11.2003 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
szkoda ze nie napisales pod czym piszesz te zapytania. wnioskuje ze srednikow znajdujacych sie w kodzie ze jest to (chyba) mysql.
ja pracuje na mssql i Twoj problem mozna na tym rozwiazac bardzo szybko poprzez takie zapytanie: [sql:1:0fb472fd77] SELECT t.firstname, t.lastname, sum(t.liczba) 'Liczba produktow + umow' FROM (SELECT a.firstname, a.lastname, count(f.agent_id) 'Liczba' FROM agents_pl a LEFT join firms_pl_transact f ON (a.agent_id = f.agent_id) WHERE a.active_i = 1 AND a.agent_id NOT in (1, 2) GROUP BY a.firstname, a.lastname,a.agent_id UNION SELECT a.firstname, a.lastname, count(p.agent_id) 'Liczba' FROM agents_pl a LEFT join products_pl_transact p ON (a.agent_id = p.agent_id) WHERE a.active_i = 1 AND a.agent_id NOT in (1, 2) GROUP BY a.firstname, a.lastname,a.agent_id ) t GROUP BY t.firstname, t.lastname ORDER BY 3 desc, 1 [/sql:1:0fb472fd77] wydaje mi sie ze mysql obsluguje juz podzapytania. jesli nie to chyba bedziesz jednak musial to rozbic na 2 select'y Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 14:57 |