problem dolaczania pustych kategorii
eXscythe - 04-07-2006 00:56
problem dolaczania pustych kategorii
Witam,
Moze ktorys z bardziej doswiadczonych kolegow z zakresu baz danych pomoze mi w rozwiazaniu malego problemu.
mam dwie tabele o ponizszej strukturze (troche ja uproscilem, zeby bylo przejrzysciej)
newscat ------------------------------ catid | parent_id | catname
news ------------------------------ newsid | newscat | content
Chce
1. wyswietlic spis kategorii z dodatkowa kolumna zawierajaca ilosc newsow w danej kategorii. Robie to na dwa sposoby:
SELECT c.* , count(*) FROM news as n join newscat as c on c.catid = n.newscat group by c.catid SELECT c.*, count(n.newsid) FROM news as n, newscat as c WHERE n.newscat = c.catid group by c.catid
Niestety zaden z tych sposobow nie wyswietla pustych kategorii, czyli kategorii dla ktorych nie ma zadnego newsa. A potrzebuje zeby pojawily sie na spisie z count rownym 0
2. Milo by bylo gdyby kategorie wyswietlily sie w postaci drzewka.
kategoria1 -kategoria73 -kategoria23 --kategoria13 -kategoria50 kategoria2 kategoria3 -kategoria98
etc.
Nie wiem czy jest jakis sposob na to w sql, czy trzeba sobie napisac w zamian w php funkcje rekurencyjna do przechodzenia po tych kategoriach? Jesli da sie to zrobic jakos ladnie zapytaniem sql, to bylbym wdzieczny za wszelka pomoc.
Pozdrawiam
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 04-07-2006 00:56
eXscythe wrote: > SELECT c.* , count(*) FROM news as n join newscat as c on c.catid = > n.newscat group by c.catid > SELECT c.*, count(n.newsid) FROM news as n, newscat as c WHERE > n.newscat = c.catid group by c.catid > > Niestety zaden z tych sposobow nie wyswietla pustych kategorii, czyli > kategorii dla ktorych nie ma zadnego newsa. A potrzebuje zeby pojawily > sie na spisie z count rownym 0 OUTER JOIN
> 2. Milo by bylo gdyby kategorie wyswietlily sie w postaci drzewka. > > kategoria1 > -kategoria73 > -kategoria23 > --kategoria13 > -kategoria50 > kategoria2 > kategoria3 > -kategoria98 > > etc. > > Nie wiem czy jest jakis sposob na to w sql, czy trzeba sobie napisac w > zamian w php funkcje rekurencyjna do przechodzenia po tych kategoriach? CONNECT BY (dużo na ten temat jest w FAQ)
-- Michał Kuratczyk
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 04-07-2006 00:56
eXscythe wrote: > 1. wyswietlic spis kategorii z dodatkowa kolumna zawierajaca ilosc > newsow w danej kategorii. > Robie to na dwa sposoby: > > SELECT c.* , count(*) FROM news as n join newscat as c on c.catid = > n.newscat group by c.catid
LEFT JOIN
> 2. Milo by bylo gdyby kategorie wyswietlily sie w postaci drzewka. > > kategoria1 > -kategoria73 > -kategoria23 > --kategoria13 > -kategoria50 > kategoria2 > kategoria3 > -kategoria98
FAQ
-- P.M.
eXscythe - 04-07-2006 00:56
Paweł Matejski napisał(a): > eXscythe wrote: > > 1. wyswietlic spis kategorii z dodatkowa kolumna zawierajaca ilosc > > newsow w danej kategorii. > > Robie to na dwa sposoby: > > > > SELECT c.* , count(*) FROM news as n join newscat as c on c.catid = > > n.newscat group by c.catid > > LEFT JOIN > > > 2. Milo by bylo gdyby kategorie wyswietlily sie w postaci drzewka. > > > > kategoria1 > > -kategoria73 > > -kategoria23 > > --kategoria13 > > -kategoria50 > > kategoria2 > > kategoria3 > > -kategoria98 > > FAQ > > -- > P.M.
Próbowałem już wcześniej zarówno LEFTa jaki OUTERa i niestety problem pozostaje. Nadmienię, że korzystam z 4.1.11 wersji MySQLa
Co do drzewek, to faq niestety nie wyjasnia jak do metody 2 (bo taka przyjalem) napisac zapytanie SQL. Zmienic metody nie moge.
interia - 04-07-2006 00:56
Select c.nazwa, (select count(*) from news where news.catid = c.id) from catid as c
Powinno działać
Pozdro
-----Original Message----- From: owner-pl-comp-bazy-danych@newsgate.pl [mailto:owner-pl-comp-bazy-danych@newsgate.pl] On Behalf Of Paweł Matejski Sent: Monday, July 03, 2006 3:09 PM To: pl-comp-bazy-danych@newsgate.pl Subject: Re: problem dolaczania pustych kategorii
eXscythe wrote: > 1. wyswietlic spis kategorii z dodatkowa kolumna zawierajaca ilosc > newsow w danej kategorii. > Robie to na dwa sposoby: > > SELECT c.* , count(*) FROM news as n join newscat as c on c.catid = > n.newscat group by c.catid
LEFT JOIN
> 2. Milo by bylo gdyby kategorie wyswietlily sie w postaci drzewka. > > kategoria1 > -kategoria73 > -kategoria23 > --kategoria13 > -kategoria50 > kategoria2 > kategoria3 > -kategoria98
FAQ
-- P.M.
____________ Poczta sprawdzona przez G DATA AntiVirenKit Wersja: AVK 16.7947 z dnia 17.06.2006 Informacje: www.gdata.pl
------------------------------------------------------------------------ Znajdź krótszą drogę do pracy! http://map24.interia.pl - interaktywny planer podróży.
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
tomasz.rup@gmail.com - 04-07-2006 00:56
eXscythe napisał(a): > Próbowałem już wcześniej zarówno LEFTa jaki OUTERa i niestety > problem pozostaje.
A w dobrej kolejności LEFTa stosowałeś?
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
zanotowane.pldoc.pisz.plpdf.pisz.planette.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|