Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 42 Dołączył: 27.07.2010 Skąd: Jaworzno Ostrzeżenie: (0%)
|
Witam, mam 2 tabele:
Kod CREATE TABLE `komentarze` ( `lp` smallint(6) NOT NULL auto_increment, `id` smallint(6) NOT NULL default '0', `data` datetime NOT NULL default '0000-00-00 00:00:00', `www` text collate utf8_polish_ci NOT NULL, `autor` varchar(255) collate utf8_polish_ci NOT NULL default '', `email` varchar(100) collate utf8_polish_ci NOT NULL, `ip` text collate utf8_polish_ci NOT NULL, `przegladarka` text collate utf8_polish_ci NOT NULL, `zalogowany` varchar(50) collate utf8_polish_ci NOT NULL, `tresc` text collate utf8_polish_ci NOT NULL, PRIMARY KEY (`lp`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='Komentarze' AUTO_INCREMENT=88; -- -------------------------------------------------------- -- -- Struktura tabeli dla `newsy_strony` -- CREATE TABLE `newsy_strony` ( `id` smallint(6) NOT NULL auto_increment, `nazwa` text collate utf8_polish_ci NOT NULL, `data` datetime NOT NULL default '0000-00-00 00:00:00', `autor` varchar(255) collate utf8_polish_ci NOT NULL default '', `tresc` text collate utf8_polish_ci NOT NULL, `typ` text collate utf8_polish_ci NOT NULL, `link` text collate utf8_polish_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=124; Normalnie pobieram tak: Kod SELECT * FROM `newsy_strony` WHERE typ =1 ORDER BY `data` Czy była by możliwość pobrania ilości komentarzy z tabeli `komentarze` ? W jednym zapytaniu zamiast stosować drugie zapytanie: Kod SELECT COUNT( * ) FROM komentarze WHERE id =99 0 Myślałem zastosować jakiś JOIN ale nie za bardzo umiem MYSQL (cały czas pogłębiam swoją wiedzę) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 29 Dołączył: 5.07.2011 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 42 Dołączył: 27.07.2010 Skąd: Jaworzno Ostrzeżenie: (0%)
|
No mniej więcej coś takiego ale chyba jednak nie:
Kod SELECT newsy_strony.id, newsy_strony.nazwa, newsy_strony.data, newsy_strony.autor, newsy_strony.tresc, newsy_strony.typ, newsy_strony.link FROM newsy_strony LEFT JOIN komentarze ON newsy_strony.id = komentarze.lp Coś takiego tylko, żeby w tej ostatniej kolumnie pobierało ilość komentarzy do danego newsa ale chyba nie da się czegoś takiego zrobić w jednym zapytaniu... |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 29 Dołączył: 5.07.2011 Ostrzeżenie: (0%)
|
No mniej więcej coś takiego ale chyba jednak nie: Kod SELECT newsy_strony.id, newsy_strony.nazwa, newsy_strony.data, newsy_strony.autor, newsy_strony.tresc, newsy_strony.typ, newsy_strony.link FROM newsy_strony LEFT JOIN komentarze ON newsy_strony.id = komentarze.lp Coś takiego tylko, żeby w tej ostatniej kolumnie pobierało ilość komentarzy do danego newsa ale chyba nie da się czegoś takiego zrobić w jednym zapytaniu... A nie możesz sobie tego w php już policzyć(IMG:style_emoticons/default/questionmark.gif) |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%)
|
Najszybsze jest podzapytanie takie jak podał Gothye (join i grupowanie wolniejsze) ale i tak przy większych ilościach danych będziesz miał problemy a już na pewno jeśli będziesz chciał pobrać więcej niż jednego newsa i przeliczyć komentarze "w locie".
Ja bym radził trzymać ilość komentarzy w tabeli z newsami i aktualizować to pole odpowiednią funkcją/metodą podczas dodawania/usuwania komentarza. |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%)
|
w mysql bedzie to rzeczywiscie nie wydajnie wczytywac to w locie.
tu masz uproszczony przyklad jak to mozna zrobic, gdybys mimo wszystko chcial takie rozwiazanie.
Ten post edytował alegorn 3.04.2012, 10:15:22 |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%)
|
select count (*) from xxx, * from yyy
Powód edycji: [thek]: Jako żyję, to taką składnię SELECT pomieszanego z FROM, pierwsze widzę...
|
|
|
|
Post
#9
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Może się mylę, ale chyba na chwilę obecna jakoś serwis łączy komentarz określionyy z newsem, a więc po czymś na pewno następuje łączenie. Kwestia: CZEGO? Podejrzewam, że jest to w tabeli komentarzy pole id lub jest do tego osobna tabela łącząca. Jeśli już połapiesz się z joinem, użycie count będzie tylko postawieniem kropki nad i.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 10:47 |