Как исправить мой запрос - PullRequest
       2

Как исправить мой запрос

1 голос
/ 04 августа 2011

У меня следующий запрос:

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.

Любая идея, как это исправить / что не так с моим запросом?

1 Ответ

3 голосов
/ 04 августа 2011

Это:

FROM table_a, table_c
LEFT JOIN table_b
ON table_a.field1=table_b.field1

, кажется, пытается объединить влево table_c и table_b, используя столбец в table_a, и это не имеет особого смысла.Попробуйте переписать весь FROM следующим образом:

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

Также обратите внимание, что я переместил условие соединения для table_c и table_b в предложение FROM, поэтому оно не понадобится в предложении WHERE.больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...