![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam sobie taki problem. Otóż potrzebuję rozwiązania, które pozwoli mi na wcielenie elementów jednej tablicy do drugiej. Chodzi o zredukowanie ilości zapytań do bazy danych oraz pętel. Postaram się przedstawić problem najprościej jak mogę - na przykładzie np. newsów i komentarzy do nich. Pobieram z bazy wszystkie newsy i otrzymuję ich identyfikatory i rzecz jasna jakąś tam treść. Następnie pobieram z bazy komentarze do newsów i otrzymuję ich identyfikator główny oraz identyfikator odnoszący się do newsa. I teraz: wykonałem 2 zapytania do bazy posiadam 2 listy: jedną z newsami a drugą z komentarzami. Np.: A chciałbym połączyć to tak, aby wyglądało to w ten sposób:
Zaiste można pobrać newsy a potem w pętli pobierać do nich komentarze ale rozwiązanie to nie jest zbyt optymalne. Można także w pętli odtworzyć tablicę z newsami i potem przeszukiwać za każdym razem tablicę z komentarzami, coś w tym rodzaju:
Ale to rozwiązanie nie wydaje mi się też zbyt optymalne. Wydaje mi się, że próbuję wynajdywać koło na nowo. Istnieje na to jakiś prosty sposób? Jakaś gotowa funkcja tablicy? Coś w rodzaju połączenia obu tablic przy pomocy klucza, który wiązałby obie tablice w jakiś sposób. Najlepiej, jakby dało się to załatwić już na poziomie pobierania danych z bazy. Ten post edytował Mephis 5.02.2016, 15:08:49 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Można także w pętli odtworzyć tablicę z newsami i potem przeszukiwać za każdym razem tablicę z komentarzami, coś w tym rodzaju: Wkladajac news do tablicy nadajesz mu index bedacy jego ID. Majac teraz tablice newsow i komenty, iterujesz po tablicy komenty, bierzesz ID newsa i wrzucasz koment do tablicy newsa - masz ID newsa wiec bez problemu mozesz dostac sie do newsa w tablicy przez index bedacy ID newsa. Mozna to tez zrobic od razu przy pomocy jednego zapytania. Tu masz przyklad: http://nospor.pl/grupowanie-wynikow.html ps: czemu pobierasz wszystki newsy za jednym zamachem? Zdajesz sobie sprawe, ze jak bedziesz mial wiecej newsow to zajedziesz aplikacje? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Póki co potrzebowałem samego sposobu na wypełnienie "newsów" komentarzami. Ostatecznie pobierany byłby tylko pewien zakres elementów.
Sposób przedstawiony pod tym linkiem jest raczej dobry, gdyż ogranicza ilość zapytań do jednego, ale żeby poprawnie wyświetlić zakres "newsów", musiałbym w zapytaniu dodać warunek z podzapytaniem
Czy takie rozwiązanie w tym przypadku jest dobre? Ten post edytował Mephis 5.02.2016, 16:23:55 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
raczej tak
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Niestety, jest problem... Nie mogę użyć tego podzapytania w celu ograniczenia wyników.
"#1235 - This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'" Ten post edytował Mephis 5.02.2016, 16:55:50 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 18:55 |