Php 如何修复我的查询

Php 如何修复我的查询,php,sql,postgresql,pdo,Php,Sql,Postgresql,Pdo,我有以下疑问: SELECT table_a.field1, table_b.field1 FROM table_a, table_c LEFT JOIN table_b ON table_a.field1=table_b.field1 WHERE table_a.field2 LIKE ? AND table_a.field3 = ? AND table_a.field4 = ? AND table_b.field1 IS NULL AND table_c.id = table_b.c_id

我有以下疑问:

SELECT table_a.field1, table_b.field1
FROM table_a, table_c
LEFT JOIN table_b
ON table_a.field1=table_b.field1
WHERE table_a.field2 LIKE ?
AND table_a.field3 = ?
AND table_a.field4 = ?
AND table_b.field1 IS NULL
AND table_c.id = table_b.c_id
AND table_c.field1 = ?
AND table_c.field2 = ?
AND table_c.field3 = ?
但是,当执行时,我得到以下错误:

o: SQLSTATE[42P01]: Undefined table: 7 ERROR:  invalid reference to FROM-clause entry for table "table_a" at character 114
HINT:  There is an entry for table "table_a", but it cannot be referenced from this part of the query.
我正在使用PostgreSQL和PDO

知道如何解决这个问题/我的查询出了什么问题吗?

这个:

FROM table_a, table_c
LEFT JOIN table_b
ON table_a.field1=table_b.field1
似乎正在尝试使用
表a
中的列左键联接
表c
表b
,这没有多大意义。尝试从以下内容改写整个内容:

FROM table_a
LEFT JOIN table_b ON table_a.field1 = table_b.field1
JOIN table_c ON table_c.id = table_b.c_id
还请注意,我已将
表c
表b
的连接条件移动到FROM子句中,这样您就不再需要在WHERE子句中使用它了。

请参阅