![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 1 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam mały problem z zapytaniem.
Mam tabelki: board_topic -> id,id_autora_tematu,id_autora_ostaniego_posta user -> id,name Nazwy są intuicyjne, mimo tego wyjaśnię: Pierwsza przechowuje id tematu, id użytkownika który założył temat, i id użytkownika który jako ostatni wypowiedział się w temacie. Problem pojawia się kiedy chce pobrać 20 rekordów. Wykombinowałem to tak:
Jak widać każdy z tematów występuje 2 razy, i jest to zrozumiałe -> tak skonstruowane jest zapytanie. Jest jakiś inny sposób aby złączyć tabele w sposób: jednemu rekordowi z jednej dołączamy 2 z innej tabeli ? //---------------------------------------------- Coś nie daję rady z tym SQL dzisiaj (IMG:style_emoticons/default/biggrin.gif) Mam tabele z tematami -> które podzieliłem na kategorię. I chce pobrać po 20 rekordów z każdej.
Oczywiście mogę to zrobić jak wyżej z 3 SELECT wykorzystując multipleQuery. Ale da się to zrobić lepiej ? optymalniej ? może w 1 zapytaniu ? Ten post edytował tadeurz 31.05.2013, 23:30:51 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 1 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
bpskiba nie może tak być.
Ja chce pobrać po 20 z każdek kategorii. 20 z help i 20 z question. /-------- Dodam tylko że jestem świadomy innego rozwiązania: W oryginalnym skrypcie oczywiście znajduje się jeszcze jedna tabela:
Można by w tabeli board_topic zamiast id_autorów przechowywać id_pierwszego postu oraz id_ostatniego postu. I JOIN’nować koleją tabelę -> board_post. W takiej sytuacji nie dublowałbym tych samych danych (id_autorów, datę_postów). Wolę świadomie zwiększyć wielkość bazy danych niż obciążać ją bardziej złożonymi zapytaniami. To rozwiązanie wydaje się optymalniejsze, jeżeli się mylę proszę o odpowiedź. Ten post edytował tadeurz 1.06.2013, 13:22:38 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 02:49 |