Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: count==0
Forum PHP.pl > Forum > Bazy danych
Bielo
Mam taki kodzik
[sql:1:b679ee5d15]SELECT fora.id,fora.nazwa,fora.opis, count( DISTINCT tematy.id ) AS ilosc_tematow , count(DISTINCT posty.id ) AS ilosc_postow FROM fora, tematy, posty, uzytkownicy WHERE uzytkownicy.id = posty.autor AND tematy.forum_id=fora.id AND posty.forum_id=fora.id GROUP BY fora.id[/sql:1:b679ee5d15]
i teraz jest taki problem, że jak do tematu nie jest przypisany żaden post to nie zwraca żadnego wyniku wydaje mi się że chodzi o zmianę tego co jest za WHERE
FiDO
Problem jest w tym, ze w tym zapytaniu zastosowane sa INNER JOIN'y, a zeby uzyskac to co chcesz trzebaby uzyc LEFT/RIGHT JOIN'ow.
Pokaz strukture tych tabeli to moze da sie cos wymyslec.

PS. a najlepiej jakbys wyexportowal np. w phpMyAdmin'ie jakies przykladowe dane (lacznie ze struktura) i to gdzies umiescil, wtedy latwiej byloby pomoc.
Bielo
Kod
# Struktura tabeli dla  `fora`

#



CREATE TABLE `fora` (

  `id` int(10) unsigned NOT NULL auto_increment,

  `nazwa` text NOT NULL,

  `opis` text NOT NULL,

  PRIMARY KEY  (`id`)

) TYPE=MyISAM AUTO_INCREMENT=3;



#

# Zrzut danych tabeli `fora`

#



INSERT INTO `fora` VALUES (1, 'HTML', 'j.w.');

INSERT INTO `fora` VALUES (2, 'asdf', 'dfsdgdfhgd');
Kod
# Struktura tabeli dla  `tematy`

#



CREATE TABLE `tematy` (

  `id` int(10) unsigned NOT NULL auto_increment,

  `forum_id` int(10) unsigned NOT NULL default '0',

  `typ` int(10) unsigned NOT NULL default '0',

  `zablokowany` int(10) unsigned NOT NULL default '0',

  `tytul` text NOT NULL,

  `post_prowadzacy` int(10) unsigned NOT NULL default '0',

  `wyswietlen` int(10) unsigned NOT NULL default '0',

  PRIMARY KEY  (`id`)

) TYPE=MyISAM AUTO_INCREMENT=4;



#

# Zrzut danych tabeli `tematy`

#



INSERT INTO `tematy` VALUES (3, 1, 0, 0, '1-szy temat', 3, 0);
Kod
# Struktura tabeli dla  `posty`

#



CREATE TABLE `posty` (

  `id` int(10) unsigned NOT NULL auto_increment,

  `forum_id` int(10) unsigned NOT NULL default '0',

  `temat_id` int(10) unsigned NOT NULL default '0',

  `data` int(10) unsigned NOT NULL default '0',

  `autor` int(10) unsigned NOT NULL default '0',

  `tresc` longtext NOT NULL,

  `kolor` text NOT NULL,

  PRIMARY KEY  (`id`)

) TYPE=MyISAM AUTO_INCREMENT=4;



#

# Zrzut danych tabeli `posty`

#



INSERT INTO `posty` VALUES (3, 1, 3, 1078594431, 1, '[url]http://www.kurs.prv.pl[/url]rn[url=http://www.kurs.prv.pl]Kurs[/url]rn', '');

    
FiDO
[sql:1:d66d17edbf]SELECT
f.id,
f.nazwa,
f.opis,
count(DISTINCT t.id ) AS ilosc_tematow,
count(DISTINCT p.id ) AS ilosc_postow
FROM fora f
LEFT JOIN tematy t ON (t.forum_id = f.id)
LEFT JOIN posty p ON (p.forum_id = f.id)
GROUP BY f.id[/sql:1:d66d17edbf]
O to chodzilo ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.