2011-08-04 26 views
1

我有以下查詢:如何解決我的查詢

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

請參閱http://stackoverflow.com/questions/761545/mixing-implicit-and-explicit-joins – Quasdunk

回答

3

此:

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

似乎試圖在table_a使用列左加入table_ctable_b,並且不做出太大的意義。嘗試重寫整個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_ctable_b到FROM子句,所以你不會需要它在WHERE子句中了。