Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 7.12.2007 Ostrzeżenie: (0%)
|
Czy jest możliwe i jeśli tak to jak, wyciągnąć komentarze wraz z informacją ile jest odpowiedzi na te komentarze
Struktura tabelki comments to: commentID itemID userID comment_date comment_content comment_parent gdzie to własnie comment_parent decyduje o tym, czy dany komentarz jest odpowiedzą i przyjmuje wartości : * 0 - gry to główny koment - nie odpowida na żadny inny koment * commentID - identyfikator komentarza na jaki odpowiada Chciałbym teraz wyciągnąć najnowsze komentarze z comment_parent=0 + miec w osobnej kolumnie info, czy komentarz ma odpowiedzi (a idealnie to ile ma odpowiedzi). Czy jest to wykonalne 1 zapytaniem? Jedyne rozwiązanie jakie wymyśliłem, to dodać osobną kolumnę answers_count, gdzie będę zwiększać cyferkę przy każdej dokonanej odpowiedzi. Ale jakoś wydaje mi sie to słabe rozwiązanie :/ Proszę o pomoc. |
|
|
|
![]() |
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 690 Pomógł: 92 Dołączył: 6.02.2011 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 7.12.2007 Ostrzeżenie: (0%)
|
trochę niejasna dla mnie odpowiedź...
jeśli chodziło o np.
to nie daje to oczekiwanego rezutatu (zwraca pojedynczy rekord i na końcu dokleja liczbę wszystkich komentarzy spełniająych warunek c.itemID='2' ). |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%)
|
wykorzystaj złączenie tej samej tabeli (LEFT JOIN) z tym warunkiem o którym piszesz, czyli że comment_parent wskazuje na odpowiedź
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%)
|
Wbrew pozorom rozwiązanie, które wymyśliłeś, czyli zapisujące ilość odpowiedzi w osobnej kolumnie jest całkiem dobre.
Masz tu klasyczny przypadek drzewa zapisanego jako adjacency list, do tego sam charakter komentarzy sugeruje nieograniczony poziom zagnieżdżenia i w tym wypadku nie jest możliwe podanie liczby odpowiedzi przy pomocy samego sql, gdyż wymagałoby to tyle self-joinów ile wynosi ten poziom. Krótko mówiąc musiałbyś iterować po całej tabeli i liczyć odpowiedzi albo w procedurze albo w zewnętrznym języku. Możesz próbować przerobić to na nested sets, ale ten model też ma wady, zwłaszcza przy dużej liczbie dodawanych rekordów, co dla komentarzy jest raczej oczywiste, nested sets lepiej się sprawdza na przykład dla drzewa kategorii produktów, gdzie zmiany w tym drzewie nie są zbyt częste. Dlatego trzymanie liczby odpowiedzi w osobnej kolumnie jest całkiem rozsądnym rozwiązaniem. |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 7.12.2007 Ostrzeżenie: (0%)
|
wedlug wskazówek BaN:
Niestety nadal nie działa. Dostaję 1 wiersz(rekord) i nie wiem co robię nie tak. Ten post edytował o_d 12.06.2011, 10:30:15 |
|
|
|
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 |
Brakuje GROUP BY po głównych komentarzach
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 7.12.2007 Ostrzeżenie: (0%)
|
bardzo dziękuję!
Dla potomnych gotowiec:
|
|
|
|
![]() ![]() |
|
Aktualny czas: 20.08.2025 - 02:07 |