![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 3 Dołączył: 11.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
Mam zapytanie z podzapytaniem, w których pobieram dane z tabeli kategorii wraz z ilością tematów w tej kategorii
"SELECT @A:=id,name,description, (SELECT COUNT(id) FROM topics WHERE category = @A) AS all_rows FROM categories" W związku z tym, że w tabeli categories doszło mi kilka kolumn chciałbym uniknąć wypisywanie w selekcie nazw ich wszystkich. Próbowałem "SELECT *,@A:=id, (SELECT COUNT(id) FROM topics WHERE category = @A) AS all_rows FROM categories" i niby działa ale tworzy mi wtedy zupełnie nie potrzebnie zduplikowaną kolumnę id pod nazwą, "@A:id". Jakaś podpowiedź jak skonstruować zapytanie aby pobierać wszystkie kolumny z categories, jednocześnie dalej liczyć ilosć tematów z danej kategorii, ale bez wypisywania nazw wszystkich kolumn do pobrania? @Edit: już wykminiłem: "SELECT c.*, (SELECT COUNT(id) FROM topics WHERE category = c.id) AS all_rows FROM categories AS c" chyba, że można jeszcze lepiej ![]() Ten post edytował RysQ 12.06.2015, 01:39:59 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 3 Dołączył: 11.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
Przy takim zapytaniu w przypadku gdy kategoria ma 0 tematów w ogóle nie zostania pobrana
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
To zmień JOIN na LEFT JOIN.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 3 Dołączył: 11.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie mmmmmmm wydaje mi się dużo bardziej skomplikowane niż to, które przedstawiłem.
No ale skoro uważacie, że tak jest lepiej to nie będę się kłócił ![]() Ps żeby nie zakładać nowego tematu, który Pewnie nadawał by się do przedszkola. Zastanawia mnie komunikat jaki zwraca MySql w przypadku tych dwóch zapytań
komunikat: Zapytanie SQL zostało wykonane pomyślnie
komunikat: Showing rows 0 - 1 (2 total, Wykonanie zapytania trwało 0.0000 sekund(y)) - czyli taki standardowy, że tak powiem ![]() Skąd wynika ta różnica? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 06:30 |