Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zliczanie wystąpień rekordu w tabelach
zoltodziob
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.05.2015

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


Witajcie.
Postanowiłem założyć konto na Forum. Od kilku miesięcy korzystałem z jego pomocy, głównie przeszukując archiwalne tematy, jednak dzisiaj potrzebuję Waszej pomocy.
Mam do wykonania takie zapytanie MYSQL: muszę sprawdzić czy podany rekord id_klienta o wartości dajmy na to 10 w tabeli KLIENCI został użyty w innych tabelach. Zapytanie miało by zwraca łączną liczbę wystąpień we wszystkich tabelach (np. w 6 podanych tabelach). Próbowałem za pomocą JOIN ale strasznie skomplikowane przy wielu tabelach. Czytałem też o HAVING, ale trochę tego nie ogarniam. Dodam też pracuję przy pomocy Codeigniter. Macie jakiś pomysł? (IMG:style_emoticons/default/wink.gif)
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%)
-----


Omatkoboska...
NOT IN bez warunku na NULL? http://sqlfiddle.com/#!9/9f0e5/1
Powinno być tak: http://sqlfiddle.com/#!9/9f0e5/2
W tym drugim wydajnościowo do dupy maksymalnie. WHERE powinien być w środku, w każdym podzapytaniu.
Go to the top of the page
+Quote Post
DarkAbso
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 10
Dołączył: 17.11.2011

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


Cytat(mmmmmmm @ 11.05.2015, 15:08:37 ) *
Omatkoboska...
NOT IN bez warunku na NULL? http://sqlfiddle.com/#!9/9f0e5/1
Powinno być tak: http://sqlfiddle.com/#!9/9f0e5/2
W tym drugim wydajnościowo do dupy maksymalnie. WHERE powinien być w środku, w każdym podzapytaniu.

Ciężko odpowiedzieć precyzyjnie na pytanie jeżeli nie znam schematu bazy. Jeżeli w tabelach na id_klient jest ustawione, iż nie może przyjmować wartości null to niema problemu, w ręcz dodatkowy warunek jest zbędny "bo wydajność" (niby niewielka będzie różnica, ale przy komercyjnych rozwiązania każdy czas się liczy).
Co do drugiego zapytania to masz rację mogłem ograniczyć wcześniej i nie rzeźbić po wszystkich rekordach. Zresztą jest to proponowane rozwiązanie. Ten problem ma kilka rozwiązań, a mysql niestety ma kilka ograniczeń między innymi brak klauzuli WITH za pomocą której można w przejrzysty sposób ładnie załatwić sprawę bez zagnieżdżonych zapytań. Sprawę można załatwić również za pomocą INNER JOIN lub NOT EXISTS. Jak to się mówi temat woda, ale dzięki za zwrócenie uwagi. Na drugi raz będę dokładniej analizował problemy na tym forum, aby podać precyzyjną odpowiedź.

Ten post edytował DarkAbso 11.05.2015, 14:50:01
Go to the top of the page
+Quote Post

Posty w temacie
- zoltodziob   Zliczanie wystąpień rekordu w tabelach   9.05.2015, 18:41:06
- - mmmmmmm   Funkcje agregujące (Count) przyjacielem twym. Łącz...   10.05.2015, 00:08:56
- - zoltodziob   Nie wiem czy dobrze rozumiem, ale poniższy kod na ...   10.05.2015, 10:20:36
- - lukasz1985   Zlicz z każdej tabeli osobno i zsumuj [PHP] pobie...   10.05.2015, 11:18:21
- - zoltodziob   Takiego rozwiązania chciałem uniknąć. Chciałem to ...   10.05.2015, 13:45:02
- - viking   Od tego jest sam silnik BD. Innodb oraz ON DELETE ...   10.05.2015, 14:12:58
|- - DarkAbso   Cytat(viking @ 10.05.2015, 15:12:58 )...   11.05.2015, 12:25:37
- - mmmmmmm   Omatkoboska... NOT IN bez warunku na NULL? http://...   11.05.2015, 14:08:37
|- - DarkAbso   Cytat(mmmmmmm @ 11.05.2015, 15:08:37 ...   11.05.2015, 14:37:51
- - zoltodziob   Zgadza się id_klient nie może przyjmować wartości ...   12.05.2015, 19:29:57
- - salfunglandyare   on delete restrict lub no action spowoduje, że pod...   12.05.2015, 20:43:01
- - zoltodziob   Zrobię chyba tak jak zaproponował salfunglandyare....   12.05.2015, 20:50:40
- - DarkAbso   Zapytanie z left join'ami prawdopodobnie będzi...   12.05.2015, 22:04:55
- - salfunglandyare   Cóż, jestem pewny, że szybciej niż subqueries ale...   12.05.2015, 22:11:22
- - DarkAbso   Nie do końca i już wytłumaczę dlaczego (chociaż mo...   12.05.2015, 23:34:56
- - salfunglandyare   masz rację, ale ja pisałem o subquerries w sensie ...   12.05.2015, 23:46:50
- - DarkAbso   Jak już pisałem, temat woda. Jest kilka rozwiązań,...   13.05.2015, 00:08:59


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: 12.10.2025 - 16:09