Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> JOIN po raz kolejny
KR2615
post
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 13
Dołączył: 7.05.2007

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


Witam
Proszę o pomoc w zsformułowaniu zapytania. Mam baze danych z ludkami o strukturze id, name, id_miasta. Druga tabela z przypisanymi do nich taryfami o strukturze id, id_klienta, id_taryfy. Jakie zapytanie klepnac, zeby zliczylo mi ile klientow jest w kazdej taryfie (GROUP BY `id_taryfy`) z miasta o id 6? I drugi problem, jak wydobyc z bazy klientow, do ktorych nie jest przypisana zadna taryfa? Z gory dzieki za pomoc!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  1. SELECT t.id_taryfy, COUNT(k.id)
  2. FROM tabela_z_klientami k
  3. JOIN tabela_z_taryfami t ON (k.id = t.id_klienta)
  4. GROUP BY t.id_taryfy;

Nie powinno się stosowac (sorry, uczyc) z COUNT(1). De facto jest to poprawne, ale tylko dla JOIN, dla innych juz niekoniecznie.
A co do drugiego, to myslee ze najszybsze bedzie:
  1. SELECT k.*
  2. FROM tabela_z_klientami k
  3. LEFT JOIN tabela_z_taryfami t ON (k.id = t.id_klienta)
  4. WHERE t.id_klienta IS NULL;
Go to the top of the page
+Quote Post
sowiq
post
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(mmmmmmm @ 18.12.2013, 11:39:39 ) *
Nie powinno się stosowac (sorry, uczyc) z COUNT(1). De facto jest to poprawne, ale tylko dla JOIN, dla innych juz niekoniecznie.


Chyba nie do końca tak jest. Wychodzi na to, że COUNT(*) i COUNT(1) są równoważne jeśli nie używasz MyISAM.

Wszystkie poniższe rozwiązania działają identycznie (a przynajmniej jeśli wierzyć odpowiedzi ze StackOverflow) - http://stackoverflow.com/questions/5179969...ount-or-count1:
Kod
COUNT(*)
COUNT(1)
COUNT(pk-column)
COUNT(any-non-nullable-column)
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: 24.12.2025 - 09:23