2014-01-21 255 views
0

我想離開加入這個查詢,但它似乎沒有工作選擇查詢

select *,(SELECT datediff(t1.expirydate,CURDATE())as daysleft 
from tbl1 t1, 
left join tbl2 t2 on (t1.mid=t2.mid and t1.pid=t2.pid and t1.uid=3) 

你有你的SQL語法錯誤;

right syntax to use near 'left join tbl2 t2 on (t1.mid=t2.mid and t1.pid=t2.p' at line 3 

請讓我知道我錯了

我在這裏加入3表,但是對於KNW 3臺不工作

SELECT t1.*, t2.*,t3.* datediff(t1.expirydate, CURDATE()) AS daysleft FROM tbl1 t1 left join 
    tbl2 t2 on t1.mid = t2.mid and t1.pid = t2.pid left join tbl3 t3 on t3.pid = t2.pid where t1.uid=3 

但我得到的語法錯誤

回答

2

您不會在連接之間插入逗號。

SELECT t1.*, t2.*, datediff(fsp.expirydate, CURDATE()) AS daysleft 
FROM tbl1 t1 
left join tbl2 t2 on t1.mid = t2.mid and t1.pid = t2.pid 
cross join fsp 
where t1.uid = 3 

你也應該不把t1.uid = 3條件ON子句。 ON應該只包含與兩個表相關的條件,並且在LEFT JOIN的情況下,它還可以包含要加入的表中的條件(本例中爲t2)。

+0

+1用來說明有關工作條款 –

+0

謝謝你解釋..... – hir

+0

這裏我加入3表,但沒有工作SELECT t1。*,t2。*,t3。* datediff(t1.expirydate,CURDATE())AS daysleft FROM tbl1 t1 left join tbl2 t2 on t1.mid = t2.mid and t1 .pid = t2.pid在t3.pid = t2.pid中加入tbl3 t3,其中t1.uid = 3 ..........對於knw 3表,但是我得到語法錯誤 – hir

1

沒有逗號在第二行的「t1」之後。

另外我不認爲你可以在第1行上做「*」,你需要d要麼做 「SELECT *」 或 「選擇列,列2」

+0

雅權前綴列中沒有逗號和表名.tx – hir

1

你已經使用逗號(,)左加入之前這是不正確Synatx

試試這個

select t1.*,(SELECT datediff(fsp.expirydate,CURDATE())as daysleft 
from tbl1 t1 
left join tbl2 t2 on (t1.mid=t2.mid and t1.pid=t2.pid and t1.uid=3) 

Join Syntax

+0

雅權沒有逗號但如果條件不被加入進來TX – hir