Обсуждение: syntax error on WHERE clause...
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.
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