![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 6 Dołączył: 16.07.2006 Skąd: Jarosław Ostrzeżenie: (0%) ![]() ![]() |
Stworzyłem tabele komentarze :
| id | id_newsa | tresc | autor | ip | data | Chciałbym przy pobieraniu newsów od razu mieć liczbę komentarzy bez wysyłania kolejnego zapytania czy jest to możliwe do zrealizowania za pomocą jednego zapytania? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 22.01.2008 Skąd: Tarnobrzeg Ostrzeżenie: (0%) ![]() ![]() |
Kod SELECT * FROM tabela WHERE id='idnewsa' Podczepiasz sobie to pod zmienną i masz tablicę ![]() -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 6 Dołączył: 16.07.2006 Skąd: Jarosław Ostrzeżenie: (0%) ![]() ![]() |
tablice to bym chyba miał gdybym podczepił zmienną pod mysql_fetch_array ?
ale mi chodzi o to że kiedy pobieram newsy zapytaniem
to wyświetlam za pomocą for() każdy news osobno i problem w tym ze za każdym razem kiedy wyświetlam newsa musiałbym wysyłać zapytanie czy są komentarze do newsa o danym id_news a ja chce mieć to już pobrane, pytam czy tak się da ? Ten post edytował XDocTorX 9.07.2008, 23:39:59 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 3 Dołączył: 17.03.2008 Skąd: niekąd Ostrzeżenie: (0%) ![]() ![]() |
Cytat przy pobieraniu newsów od razu mieć liczbę komentarzy bez wysyłania kolejnego zapytania Cytat Kod SELECT * FROM tabela WHERE id='idnewsa' Podczepiasz sobie to pod zmienną i masz tablicę smile.gif Raczej chodzi mu o to, żeby wyciągnąć liczbę komentarzy w jednym zapytaniu wyciągając newsy ![]() Możesz tak zrobić, ale musisz do tabeli newsów dodać coś w stylu "all_comments,all_comments_id", gdzie będą przechowywane wszystkie komentarze dla danego id. Łatwiej jest wysłać dwa zapytania ;] -------------------- "Lecz nikt nie może tracić z oczu tego, czego pragnie. Nawet kiedy przychodzą chwile, gdy zdaje się, że świat i inni są silniejsi. Sekret tkwi w tym, by się nie poddać."
www.widmo.tk - zapraszam na mój homepage ;> |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
a nie da się tak?
Kod SELECT *, (SELECT COUNT(komantarze.id) WHERE komentarze.idnewsa=news.id) AS ilosc FROM news
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 6 Dołączył: 16.07.2006 Skąd: Jarosław Ostrzeżenie: (0%) ![]() ![]() |
to działa tylko że za każdym razem ilosc wynosi taka samą ilość komentarzy które są wogole przypasowane do id_newsa a nie do aktualnego id_newsa podam wynik który mysql zwrócł : mysql> SELECT *, (SELECT COUNT(comment.id) from comment, news WHERE comment.id_news=news.id) AS ilosc FROM news; +----+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------------+------------+-------+ | id | tytul | tresc| comment | data | uzytkownik | ilosc | +----+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------------+------------+-------+ | 1 | tytul news | tresc newsa | 0 | 2008-07-04 19:27:19 | admin | 2 | | 3 | asd | tresc newsa2 | 1 | 2008-07-02 21:49:32 | admin | 2 | | 4 | asd asdasd | tresc newsa3 | 1 | 2008-07-02 21:51:32 | admin | 2 | ... a przecież każdy news ma inną liczbę komentarzy |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 086 Pomógł: 8 Dołączył: 10.12.2003 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 6 Dołączył: 16.07.2006 Skąd: Jarosław Ostrzeżenie: (0%) ![]() ![]() |
wielkie dzięki Działa już.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 288 Pomógł: 12 Dołączył: 2.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie sądzę, by było to wydajne...
Trzymaj liczbę komentarzy w oddzielnym polu w tabeli newsów np. comments_count. Najprościej i najszybciej. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 13.03.2004 Skąd: Siemianowice Śl. Ostrzeżenie: (0%) ![]() ![]() |
Nie sądzę, by było to wydajne... Trzymaj liczbę komentarzy w oddzielnym polu w tabeli newsów np. comments_count. Najprościej i najszybciej. dokładnie, da sie jednym zapytaniem (napisal ktoś wyżej) jednak jest to nieoptymalne... najlepiej stworzyć sobie własnie dodatkowe pole z ilością komentarzy w tabeli news. Oczywiście przy dodawaniu komentarza trzeba wtedy wykonywać dwa zapytania (bo inkrementacja jeszcze), przy usuwaniu również (dekrementacja). Ale to jest właśnie ten przypadek z teorii systemów baz danych gdzie ta niewielka redundancja jest akurat porządanym zjawiskiem. Istotnie, o wiele częściej będziesz wykonywał zapytanie wybierające newsy, niż dodawał/usuwał komentarze, dlatego szkoda zasobów na niewydajne zapytanie na rzecz redundancji ktorą przecież można z łatwością kontrolować by zapobiec konfliktom. -------------------- karczmarczyk.com
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 15 Dołączył: 19.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
panowie, bez przesady. tam gdzie nie potrzeba podzapytan skolerowanych to lepiej ich nie uzywac to na pewno bedzie wydajniejsze:
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 6 Dołączył: 16.07.2006 Skąd: Jarosław Ostrzeżenie: (0%) ![]() ![]() |
myśle że wydajniejszym sposobem będzie dodanie jednak pola w newsach odpowiadającego liczbie newsów, Dzięki za wskazanie rozwiązania Pozdrawiam.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 02:05 |