Re: NOT HAVING clause?

Поиск
Список
Период
Сортировка
От Csaba Nagy
Тема Re: NOT HAVING clause?
Дата
Msg-id 1138112382.14451.61.camel@coppola.muc.ecircle.de
обсуждение исходный текст
Ответ на Re: NOT HAVING clause?  (Csaba Nagy <nagy@ecircle-ag.com>)
Список pgsql-general
OK, I really didn't think it through, GROUP BY or DISTINCT won't help
here. Sorry for the noise.

Cheers,
Csaba.

On Tue, 2006-01-24 at 15:11, Csaba Nagy wrote:
> You're right, but only if there's no GROUP BY. As soon as you use a
> GROUP BY _and_ the mentioned WHERE clause, the result will be what the
> OP wanted... or you could use SELECT DISTINCT for what he wanted.
>
> On Tue, 2006-01-24 at 15:02, Will Glynn wrote:
> > Alban Hertroys wrote:
> >
> > > Richard Huxton wrote:
> > >
> > >> Alban Hertroys wrote:
> > >> You're mixing up WHERE and HAVING. The WHERE clause applies to the
> > >> individual rows before GROUP BY. The HAVING applies to the output of
> > >> the GROUP BY stage.
> > >
> > >
> > > Ah, of course, now it makes sense. Combined with Csaba's reply my
> > > original problem has vaporized. Thank you guys :)
> >
> >
> > Csaba's response is incorrect:
> >
> > >Alban,
> > >
> > >what you want is to put the "sort_order <> 1" in the WHERE clause, not
> > >in the HAVING clause. Then it will do what you want.
> > >
> > >Cheers,
> > >Csaba.
> > >
> > If you do that, the query reads "give me unique values for some_column
> > from some_table, ignoring individual records that have sort_order=1".
> >
> > To illustrate, say we have sort_orders 2,3,4,5:
> > - NOT HAVING sort_order = 1 would result true
> > - HAVING sort_order <> 1 would result true
> > - WHERE sort_order <> 1 would result true for all records
> >
> > If we'd have 1 only:
> > - NOT HAVING sort_order = 1 would result false
> > - HAVING sort_order <> 1 would result false
> > - WHERE sort_order <> 1 would result false
> >
> > If we'd have 1,2,3,4,5:
> > - NOT HAVING sort_order = 1 would result false
> > - HAVING sort_order <> 1 would result true
> > - WHERE sort_order <> 1 would result true for records 2,3,4,5, returning
> > some_column anyway, which is not what you want
> >
> > This can be done with an aggregate, a sub-select, or a JOIN -- there's
> > no way to do this using only a single-table WHERE.
> >
> > --Will Glynn
> > Freedom Healthcare
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 6: explain analyze is your friend
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
>        subscribe-nomail command to majordomo@postgresql.org so that your
>        message can get through to the mailing list cleanly


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

Предыдущее
От: Csaba Nagy
Дата:
Сообщение: Re: NOT HAVING clause?
Следующее
От: "Dave Page"
Дата:
Сообщение: Re: Does this look ethical to you?