2016-05-06 42 views
0

我有一個SQL查詢的位置:如果連接爲空,如何返回主查詢?

鑑於

  1. $id = 4;(用戶ID)
  2. $date_now = date("Y-m-d");

我使用PHP

SELECT `u`.name, 
     `u`.email, 
     `ud`.id, 
     `ud`.in, 
     `ud`.out 
FROM users u 
JOIN dtr ud ON `ud`.id = '$id' 
WHERE `ud`.entry_date = '$date_now' LIMIT 1 

當存在dtr.id = $id where dtr.entry_date = $date_now時,查詢將返回我想要的內容。

我的問題是,每當用戶的dtr(在dtr表中找到用戶$id)不存在,查詢返回零結果。 (根據我的查詢,這是正確的)。

但我想要查詢users.nameusers.email用戶的dtr不存在

+0

使用左加入... LEFT JOIN DTR UD開'ud'.id = '$ ID'。 – RJParikh

+0

仍然返回null –

+0

試試這個:SELECT'u'.name, 'u'.email, 'ud'.id, 'ud'.in, 'ud'.out 來自用戶的ü LEFT JOIN DTR ud ON ud'.id ='$ id' WHERE'ud'.entry_date LIKE%'$ date_now'%LIMIT 1 – RJParikh

回答

1

正確的查詢使用LEFT JOIN

很少修改:

SELECT `u`.name, 
     `u`.email, 
     `ud`.id, 
     `ud`.in, 
     `ud`.out 
FROM users u 
LEFT JOIN dtr ud ON `ud`.id = '$id' AND `ud`.entry_date = '$date_now' 
WHERE `u`.id = '$id' LIMIT 1 

Where子句是行不通的,因爲這是擺在首位空。

感謝@Ruchish帕瑞克的合作

+1

請注意,沒有ORDER BY的LIMIT是相當無意義的。和ud.id = u.id – Strawberry

相關問題