Home > Archive > PostgreSQL Discussion > August 2005 > Re: : Re: A strange problem









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Re: : Re: A strange problem
Tang Tim Hei

2005-08-28, 7:23 am


>
> 寄件者: "Stephan Szabo" <sszabo@megazone.bigpanda.com>
> 日期: 2005/08/28 星期日 上午 09:03:20 HKT
> 收件者: "Tang Tim Hei" <timheit@netvigator.com>
> 副本: <pgsql-general@postgresql.org>
> 主旨: Re: 回覆: Re: [GENERAL] A strange problem
>
> On Sun, 28 Aug 2005, Tang Tim Hei wrote:
>
>
> I'm not 100% sure what you mean, but if you mean that basically adding the
> reference to test.country to a statement that looked like "select
> A.* from test.currency A where A.curr_cd='USD'", yes it gives different
> results, but it also means something different.
>
>
> Well, you have to write your queries to do what you want depending on such
> things. For example, the above doesn't constrain the join from currency
> and country and so you get multiple copies of the USD currency info for
> each country. If you want to constrain the currency and country
> information (for example, say A.country=B.id if you had that sort of
> information) you need to decide what happens if there is no country that
> matches the country.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend
>
>


Let me explain my point in more detail below:

The following commands are little different from the previous one.
(1) select A.* from test.currency A, test.price_list B where A.curr_cd=B.curr_cd and A.curr_cd='USD'
(2) select A.* from test.currency A, test.price_list B, test.country C where A.curr_cd=B.curr_cd and A.curr_cd='USD'

For command (1), it is ok. The result is what I expect.
However, for command (2), it has problem. I added the "test.country C" to it, here I actually just write a table name to it and no more other purpose. However, the result maybe totally different. If the table "country" is not empty, the result is just the
same as in command (1) but if "country" is empty, there are no result row.

The point is that: even though I add a constraint to a command, if an additional empty table is mentioned in the command, the result may be different.

I think using outer join is a solution but the above old-style command seems to be a problem.
Or it maybe a problem that hasn't be considered by our postgresql dbms developer



---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com