![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mysle jak dobrze zorganizowac pobieranie wielu danych. Moze pytanie nie nalezy do najbardziej wymagajacych, jednak zastanawiam sie ktory sposob jest szybszy i latwiejszy w pozniejszym renderowaniu na stronie. Zalezy mi na jakosci programu i kodu (IMG:style_emoticons/default/smile.gif) . Podaje przyklad mamy liste sond, kazda ma po kilka pytan. Jak najlepiej pobrac dane z bazy ? 1. Pierwsze co sie nasuwa to zeby pobrac najpierw same sondy, a pozniej w osobnym zapytaniu odpowiedzi do kazdej znich umiescic w innej tabeli. Jest to rozwiazanie ktore do tej pory stosowalem, jednak nie jestem pewien czy jest najlepsze. 2. Pobierac wszystko jednym zapytaniem uzywajac LEFT JOIN, wtedy nie mamy dwoch zapytan tylko jedno. Niestety robi sie powtarzanie danych samej sondy, no i pozniej trzeba sie troche nakombinowac przy odpowiednim wyswietleniu. Ktorego sposobu uzywacie ? Macie jakis za i przeciw ? (IMG:style_emoticons/default/smile.gif) A moze ktos obral inny sposob. Dzieki za informacje i pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
oczywiscie ze sposob 2.
W pierwszym sposobie wykonujesz x zapytan - malo optymalne. No i nie wiem gdzie ty widzisz problem w drugim sposobie? Trzeba sie nakombinowac by pobrac? Bez jaj...(IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 441 Pomógł: 71 Dołączył: 3.09.2007 Skąd: wrocław Ostrzeżenie: (0%) ![]() ![]() |
Proponuje skorzystać z LEFT JOIN oraz GROUP_CONCAT, wtedy masz jedno zapytanie i nie powtarzają się dane sondy (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hmmm bardzo ciekawe mozecie podac jakis przyklad zapytania ?
Moze zylem w blogiej nieswiadomosci (IMG:style_emoticons/default/biggrin.gif) nospor hmmm no stadardowo sa powtarzane dane z samych sond i listujac trzeba rozpoznac kiedy zaczyna sie nastepnasonda. W sposobie zzeus widze ze ten problem nie istnieje, jednak explode danych pozniej hmmm sam nie wiem. Hmmm znalazlem takiecos
Powiedzcie wynik w kolumnie "channel_names" gdzie zastosowalem GROUP_CONCAT, bedzie oddzielony przecinkiem ? Trzeba robic explode czy jakos inaczej to jest zrobione. Jeszcze nie zdazylem przetestowac (IMG:style_emoticons/default/biggrin.gif) Ten post edytował quality 22.04.2010, 10:10:50 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
jesli pytasz o GROUP_CONCAT to przyklad "jakiegos" zapytania masz w manualu:
http://dev.mysql.com/doc/refman/5.0/en/gro...on_group-concat Ja osobiscie nie korzystam z tej metody. zwykly left join bez grupowania. Potem w php bez problemu pobiera sie dane |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No dobrze ale pobierajac tak dane wystepuje nadmiarowosc danych. Podam przyklad:
Teraz widac ze jest nadmiarowosc to nie przeszkadza ? Poza tym implementacja przykladowa:
Tutaj zrobilem tak, ze na poczatku id sondy nie zgadza sie z obecnym ($sondaSprawdzana), wiec wyswietla tytul pierwszej sondy, nastepnie same odpowiedzi do sondy dopoki sie nie zmieni ID sondy, wtedy wywietlany jest znowu tytul itd. No i trzeba sprawdzac listujac odpowiedzi kiedy jest juz nastepna sonda. Moze rozwiazujesz to innym sposobem ? Ten post edytował quality 22.04.2010, 10:32:56 |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Teraz widac ze jest nadmiarowosc to nie przeszkadza ? no w tym przypadku nadmiarowosc jest normalna. Nie jest to nadmiarowosc bazy a jedynie przy pobieraniu.Podczas pobierania powinienes najpierw sobie w tablicy pogrupowac te dane, dla sondy przypisac odpowiedzi. Potem mając już taką tablicę spokojnie dane wyswietlac. Zasada jest prosta - najpierw przygotowujesz dane, potem wyswietlasz (IMG:style_emoticons/default/smile.gif) . oczywiscie mozesz zamiast pogrupowac od razu wyswietlac - efekt bedzie taki sam ino wiekszy bałagan Cytat No i trzeba sprawdzac listujac odpowiedzi kiedy jest juz nastepna sonda. no dokladnie. Przeciez to zaden problem.Cytat Moze rozwiazujesz to innym sposobem ? jesli wyswietlam od razu jak ty tutaj, to podobnie robie.jesli zas zapisuje najpierw do tablicy, to sprawdzam czy index jest juz w tablicy czy nie. nie tworze dodatkowej zmiennej pomocniczej |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ok dzieki o to mi chodzilo.
Temat jak dla mnie wyczerpany (IMG:style_emoticons/default/winksmiley.jpg) pozdrawiam Hmmm a jednak jest jeszcze jeden wazny szegol (IMG:style_emoticons/default/smile.gif) Mianowicie stosujac ta metode jak zrobic stronnicowanie ? Przeciez stosujac LIMIT nie bede mial limitu sond tylko samych odpowiedzi, a to jest nie dopuszczalne. Stronnicowanie po stronie php odpada juz calkowicie, no bo za duze obciazenia, zeby pobierac cala baze za jednym zamachem. Oczywiscie mozna pobierac limitem, ale tylko jesli by byla rowna ilosc odpowiedzi dla kazdej sondy, wtedy problem by zniknal bo by mozna bylo pomnozyc ilosc sond razy ilosc odpowiedzi. No ale niestety tak nie jest jak sobie z tym radzisz nospor ? Pozdrawiam Ten post edytował quality 23.04.2010, 08:01:54 |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
dwa zapytania:
jedno, do pobrania limitem sond. drugie do pobrania odpowiedzi dla sond z pierwszego zapytania podkreslam: dwa zapytania a nie zadna petla a w niej wykonywane zapytanie (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hmmm czyli jednak pierwszy sposob (IMG:style_emoticons/default/tongue.gif)
Trzeba tylko z pierwszego zapytania (tego o same sondy) pobrac ID i pozniej pobrac komentarze do nich. Rozumiem przez Twoje "podkreslenie" ze jesli chodzi o drugie zapytanie to najlepiej zrobic "Select odpowiedzi .. where id IN (...) " ? |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Hmmm czyli jednak pierwszy sposob trzeba bylo mowic od razu ze stronicowanie bedziesz robil (IMG:style_emoticons/default/winksmiley.jpg) Cytat Rozumiem przez Twoje "podkreslenie" ze jesli chodzi o drugie zapytanie to najlepiej zrobic "Select odpowiedzi .. where id IN (...) " ? Milo dla odmiany pomagac na forum komus, kto chwyta w mig (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 11:11 |