Обсуждение: Query problem

Поиск
Список
Период
Сортировка

Query problem

От
Clemens Schwaighofer
Дата:
hi,

thats the first time I am a bit confused by a query not working.

I have this table:

gullevek=# \d test
                                 Table "public.test"
 Column  |       Type        |                       Modifiers
---------+-------------------+--------------------------------------------------------
 test_id | integer           | not null default
nextval('test_test_id_seq'::regclass)
 email_a | character varying |
 email_b | character varying |
Indexes:
    "test_pkey" PRIMARY KEY, btree (test_id)

with this content:

gullevek=# select * from test;
 test_id |    email_a    |   email_b
---------+---------------+-------------
       2 | test@test.com | bar@foo.com
       1 | foo@bar.com   |
(2 rows)

if I do this select:

select * from (select test_id, email_a FROM test WHERE email_a =
'moo@boo.com') as s, (select test_id, email_b from test where email_b =
'bar@foo.com') as t;

I get no rows back. should it return something? subquery a doesn't
return one, because the email does not exist, b returns something.

how do I have to make the query so I get a result back and in one row?

--
[ Clemens Schwaighofer                      -----=====:::::~ ]
[ TEQUILA\ Japan IT Group                                    ]
[                6-17-2 Ginza Chuo-ku, Tokyo 104-8167, JAPAN ]
[ Tel: +81-(0)3-3545-7703            Fax: +81-(0)3-3545-7343 ]
[ http://www.tequila.co.jp                                   ]

Вложения

Re: Query problem

От
"Pavel Stehule"
Дата:
2007/10/12, Clemens Schwaighofer <cs@tequila.co.jp>:
> hi,
>
> thats the first time I am a bit confused by a query not working.
>
> I have this table:
>
> gullevek=# \d test
>                                  Table "public.test"
>  Column  |       Type        |                       Modifiers
> ---------+-------------------+--------------------------------------------------------
>  test_id | integer           | not null default
> nextval('test_test_id_seq'::regclass)
>  email_a | character varying |
>  email_b | character varying |
> Indexes:
>     "test_pkey" PRIMARY KEY, btree (test_id)
>
> with this content:
>
> gullevek=# select * from test;
>  test_id |    email_a    |   email_b
> ---------+---------------+-------------
>        2 | test@test.com | bar@foo.com
>        1 | foo@bar.com   |
> (2 rows)
>
> if I do this select:
>
> select * from (select test_id, email_a FROM test WHERE email_a =
> 'moo@boo.com') as s, (select test_id, email_b from test where email_b =
> 'bar@foo.com') as t;
>

you get 0 rows. moo@boo.com isn't anywhere and bar@foo.com cannot do
pair with any. else 0 * 1 = 0

Pavel

Re: Query problem

От
Clemens Schwaighofer
Дата:
On 2007/10/12, at 23:22, Pavel Stehule wrote:

>>
>
> you get 0 rows. moo@boo.com isn't anywhere and bar@foo.com cannot do
> pair with any. else 0 * 1 = 0

Thanks, go it now. Basically very simple.

I probably need to approach the problem different. So both are read
"independent" or something like this.

--
[ Clemens Schwaighofer                      -----=====:::::~ ]
[ TEQUILA\ Japan IT Engineer                                 ]
[                6-17-2 Ginza Chuo-ku, Tokyo 104-0061, JAPAN ]
[ Tel: +81-(0)3-3545-7703            Fax: +81-(0)3-3545-7343 ]
[ http://www.tequila.co.jp        http://www.tbwajapan.co.jp ]



Re: Query problem

От
"Rodrigo De León"
Дата:
On 10/12/07, Clemens Schwaighofer <cs@tequila.co.jp> wrote:
> I probably need to approach the problem different. So both are read
> "independent" or something like this.

Also, email_a, email_b, etc. indicate that you need to consider
refactoring your schema.

You can find a lot of tutorials on normalization online.