![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 205 Pomógł: 3 Dołączył: 20.04.2009 Skąd: Jaworzno Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam mały problem z zapytanie, chcę pobrać wszystkie rekordy(pytania) z bazy które są bez odpowiedzi. Niestety mogę wyświetlić tylko rekordy które mają minimum 1 odpowiedź, a nie mogę wyświetlić tych pustych. Moje zapytanie: Kod mysql_query("SELECT pyt.*, odp.ilosc FROM PORTAL_pytania pyt INNER JOIN(SELECT idPytania, COUNT(id) AS ilosc FROM PORTAL_odpowiedzi GROUP BY idPytania)odp ON odp.idPytania=pyt.id WHERE odp.ilosc='0' ORDER BY pyt.id DESC LIMIT $limit, $ilosc"); Wydaje mi się że problem jest w Kod ON odp.idPytania=pyt.id bo zlicza mi tylko te rekordy(pytania) które mają odpowiedź, nie wiem jak to przerobić, czy ktoś z dobrego serca mógłby mi pomóc i udzielić rady czemu tak a nie inaczej? Bardzo dziękuje z góry za pomoc. Dariusz -------------------- :) na miliony przyjdzie czas...
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Ale skoro nie ma odpowiedzi na jakieś pytanie, to i nie ma rekordu w tabeli PORTAL_odpowiedzi. Czyż nie? Jeśli tak, to nie można tych rekordów połączyć JOIN-em, bo ich po prostu nie ma. Wypróbuj:
EDIT Wcześniej była liczba pytań bez odpowiedzi. Można to troszkę przyspieszyć, posortować wg id pytania i pobrać określoną ilość rekordów:
Ten post edytował mortus 6.06.2011, 11:08:25 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 205 Pomógł: 3 Dołączył: 20.04.2009 Skąd: Jaworzno Ostrzeżenie: (0%) ![]() ![]() |
wielkie dzięki za odpowiedź, ale mam problem.
Dodając takie zapytanie "blokuje się" serwer. Wczytuje bez końca i strona pada na chwilkę. W bazie z pytaniami około 6 tysięcy rekordów a w bazie z odpowiedziami 27 tyysięcy, to chyba nie powód? Poczekałem i załadowało się, ale czas to > 60 sekund, mam serwer VPS więc tutaj raczej to nie jest problem. Sprawdziłem i bez zmian, ładuję się z prędkością tragiczną. Czyli nie ładuje się w ogóle. Z phpMyAdmin Kod Pokaż rekordy 0 - 29 (429 wszystkich, Wykonanie zapytania trwało 6.8064 sekund(y)) [id: 7300 - 7061] Tak naprawdę ładowało się > 60 sekund Ten post edytował Poker 6.06.2011, 11:20:54 -------------------- :) na miliony przyjdzie czas...
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
A masz nałożony index na idPytania w tabeli PORTAL_odpowiedzi?
Okazuje się, że przy użyciu JOIN również można to zrobić:
Jednak zarówno LEFT JOIN / IS NULL, jak i NOT IN są porównywalnie optymalne. EDIT Tak długi czas wykonywania zapytania ewidentnie świadczy o tym, że kolumna idPytania nie jest zindeksowana. Nałóż index:
Ten post edytował mortus 6.06.2011, 11:55:21 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 205 Pomógł: 3 Dołączył: 20.04.2009 Skąd: Jaworzno Ostrzeżenie: (0%) ![]() ![]() |
A masz nałożony index na idPytania w tabeli PORTAL_odpowiedzi? Okazuje się, że przy użyciu JOIN również można to zrobić:
Jednak zarówno LEFT JOIN / IS NULL, jak i NOT IN są porównywalnie optymalne. Teraz działa poprawnie, indeksu nie było. Zmieniłem troszkę zapytanie i wyświetla się wszystko poprawnie, wielkie dzięki za pomoc i poświęcony czas. -------------------- :) na miliony przyjdzie czas...
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 18:38 |