bug in JOIN or COUNT or ... ?

Поиск
Список
Период
Сортировка
От The Hermit Hacker
Тема bug in JOIN or COUNT or ... ?
Дата
Msg-id Pine.BSF.4.33.0105122009040.629-100000@mobile.hub.org
обсуждение исходный текст
Ответы Re: bug in JOIN or COUNT or ... ?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Sorry, worst Subject I've ever come up with, but this is one of those "I
haven't got a clue how to describe" emails ...

Simple query:
 SELECT distinct s.gid, s.created, i.title   FROM status s LEFT JOIN images i ON (s.gid = i.gid AND i.active),
personal_datapd, relationship_wanted rw  WHERE s.active AND s.status != 0    AND s.gid = 17111    AND (s.gid = pd.gid
ANDpd.gender = 0)    AND (s.gid = rw.gid AND rw.gender = 0 );
 

Produces:
 gid  |        created         | title
-------+------------------------+--------17111 | 2000-10-19 15:20:46-04 | image117111 | 2000-10-19 15:20:46-04 |
image217111| 2000-10-19 15:20:46-04 | image3
 
(3 rows)

Great, what I expect ...

But:
 SELECT distinct s.gid, s.created, count(i.title) AS images   FROM status s LEFT JOIN images i ON (s.gid = i.gid AND
i.active),personal_data pd, relationship_wanted rw  WHERE s.active AND s.status != 0    AND s.gid = 17111    AND (s.gid
=pd.gid AND pd.gender = 0)    AND (s.gid = rw.gid AND rw.gender = 0 )
 
GROUP BY s.gid, s.created;

Produces:

/tmp/psql.edit.70.62491: 7 lines, 353 characters. gid  |        created         | images
-------+------------------------+--------17111 | 2000-10-19 15:20:46-04 |     15
(1 row)

So why is it counting 12 more images then are actually found/exist:

testdb=# select title from images where gid = 17111;title
--------image1image3image2
(3 rows)

Marc G. Fournier                   ICQ#7615664               IRC Nick: Scrappy
Systems Administrator @ hub.org
primary: scrappy@hub.org           secondary: scrappy@{freebsd|postgresql}.org



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: 7.1.2 release
Следующее
От: Tom Lane
Дата:
Сообщение: Re: bug in JOIN or COUNT or ... ?