RE: sql with postgresql beginner

Поиск
Список
Период
Сортировка
От Warren Odom
Тема RE: sql with postgresql beginner
Дата
Msg-id 000b01c0142e$0fccb920$1806a8c0@nts
обсуждение исходный текст
Ответ на Re: sql with postgresql beginner  ("John" <radix@ihug.com.au>)
Список pgsql-novice
Apparently this didn't get sent to the list on first attempt.  Will try
again....


Well, the "from" clause is basically a join, but it does not restrict the
output.  Unless restricted by a "where" clause, a regular join will return
ALL the rows of the first table, joined with ALL the rows of the second
table.  If the first table has 2 rows and the second table has 3 rows, you
end up with 6 rows.

You need to add more to your where clause.  I think the following should do
it:

select list.item, vendors.vendorname
      from list, vendors
      where list.vendorcode = vendors.vendorcode and list.vendorcode = 101;

To understand the process better, try it with no where clause at all, then
add the where conditions one at a time, saving the list.vendorcode = 101 for
last.

Using an explicit JOIN as suggested by Windy is another way of getting the
same result.  Using that syntax, you can also do different kinds of joins,
which produce different results in cases where one table has records that
have no matching records in the other table.

           -- Warren


-----Original Message-----
From:    pgsql-novice-owner@hub.org [mailto:pgsql-novice-owner@hub.org] On
Behalf Of John
Sent:    Wednesday, August 30, 2000 5:44 PM
To:    pgsql-novice@postgresql.org
Subject:    Re: [NOVICE] sql with postgresql beginner

I just got it with

select list.item, vendors.vendorname
   from list, vendors
   where list.vendorcode = 101 and vendors.vendorcode = 101;

I thought that the 'from' clause was a join?

Back to the docs for me I think.

----- Original Message -----
From: Windy Elliott <windye@softshare.com>
To: <radix@ihug.com.au>
Cc: <pgsql-novice@postgresql.org>
Sent: Thursday, August 31, 2000 7:55 AM
Subject: RE: [NOVICE] sql with postgresql beginner


> I am a begginer as well, but I am under the impression that you actually
> need to join the tables.
>
> select list.item, vendors.vendorname from list LEFT JOIN vendors ON
> list.vendorcode = vendors.vendorcode where list.vendorcode = 101;
>
> This is how I would do it.  If I am wrong, please, someone correct me.
>
> Windy
>
> -----Original Message-----
> From: radix@ihug.com.au [mailto:radix@ihug.com.au]
> Sent: Wednesday, August 30, 2000 3:19 PM
> To: pgsql-novice@postgresql.org
> Subject: [NOVICE] sql with postgresql beginner
>
>
> Could somebody comment on why my SQL query hasn't produced the desired
> result (apart from pointing out that my SQL skills suck)
>
>
> I've listed the two tables I'm using (created them from an example
> article at www.networkcomputing.com) and the select statement which
> isn't producing the correct result.
>
>
> list table
> ==========
>     item     | vendorcode | quantity
> -------------+------------+----------
>  Root Beer   |        100 |        3
>  Ice Cream   |        100 |        1
>  Napkins     |        101 |       50
>  Spark Plugs |        102 |        4
>
>
> vendors table
> =============
>  vendorcode |        vendorname
> ------------+---------------------------
>         100 | Super Grocer
>         101 | Genernal Department Store
>         102 | General Auto Parts
>
>
> Now here's the select statement which I thought should produce just
> one row containing "Napkins | Genernal Department Store"
>
> select list.item, vendors.vendorname
>      from list, vendors
>      where list.vendorcode = 101;
>   item   |        vendorname
> ---------+---------------------------
>  Napkins | Super Grocer
>  Napkins | Genernal Department Store
>  Napkins | General Auto Parts
>
>


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

Предыдущее
От: "Sokel, John"
Дата:
Сообщение: RE: Access import
Следующее
От: ghaverla@freenet.edmonton.ab.ca
Дата:
Сообщение: Re: 7.0.2 regressions testing on Sparc running 2.5.1