Обсуждение: syntax error on WHERE clause...

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

syntax error on WHERE clause...

От
Robert Poor
Дата:
I'm getting syntax errors in what (I thought) is a simple query.  This
query works in SQLite, but in psql 8.3.14 gets:

  ERROR:  syntax error at or near "WHERE"

Here's the query:

SELECT (d4.digit * 10000 + d3.digit * 1000 + d2.digit * 100 + d1.digit
* 10 + d0.digit) AS date
             FROM digits AS d0
       INNER JOIN digits AS d1
       INNER JOIN digits AS d2
       INNER JOIN digits AS d3
       INNER JOIN digits AS d4
            WHERE (d4.digit * 10000 + d3.digit * 1000 + d2.digit * 100
+ d1.digit * 10 + d0.digit) < 33
         ORDER BY date;

Any idea what's wrong?

FWIW, Digits is a table populated with 10 digits:

=> select * from digits;
 id | digit
----+-------
  1 |     0
  2 |     1
  3 |     2
  4 |     3
  5 |     4
  6 |     5
  7 |     6
  8 |     7
  9 |     8
 10 |     9
(10 rows)

I'm sure it's something obvious, but reading

  http://www.postgresql.org/docs/8.3/interactive/queries-table-expressions.html

has yet to lead me to enlightenment.

Re: syntax error on WHERE clause...

От
Tom Lane
Дата:
Robert Poor <rdpoor@gmail.com> writes:
> I'm getting syntax errors in what (I thought) is a simple query.  This
> query works in SQLite, but in psql 8.3.14 gets:

>   ERROR:  syntax error at or near "WHERE"

> Here's the query:

> SELECT (d4.digit * 10000 + d3.digit * 1000 + d2.digit * 100 + d1.digit
> * 10 + d0.digit) AS date
>              FROM digits AS d0
>        INNER JOIN digits AS d1
>        INNER JOIN digits AS d2
>        INNER JOIN digits AS d3
>        INNER JOIN digits AS d4
>             WHERE (d4.digit * 10000 + d3.digit * 1000 + d2.digit * 100
> + d1.digit * 10 + d0.digit) < 33
>          ORDER BY date;

> Any idea what's wrong?

INNER JOIN requires an ON clause.  If you really don't need any
additional join conditions than what's in the WHERE, you could write
CROSS JOIN, or you could just put commas there.

            regards, tom lane