2014-03-19 119 views
0

這裏是有問題的查詢:這個查詢爲什麼不工作?

SELECT e.id, e.name, u.x_account_username, ao.id 
FROM x_evidence e 
LEFT JOIN x_ambition_owner ao 
ON e.ambition_id = ao.id 
LEFT JOIN x_user u 
ON ao.profile_id = u.id 
WHERE e.updated BETWEEN '2014-03-19 10:16:00' AND '2014-03-19 11:16:00' 

有人能看到我在做什麼錯?

證據表:

id  ambition_id  name  updated 
1jk  2ef    abc  2014-03-19 10:33:31 

野心主表:

id  ambition_id  profile_id 
1op  2ef    1abc 

用戶表:

id  x_account_username 
1abc rex hamilton 

我希望我的迴歸獲得:

證據ID,姓名,用戶名AME,相關的野心ID之間規定的時間(但這些可能會發生變化)

由於它不工作

+4

您可以通過移動狀態進入on條款解決這個問題查詢失敗並給出錯誤?還是隻是不返回任何行?你能提供你的表模式和樣本數據嗎? – Jon

+0

已更新,請看看 – cwiggo

回答

3

的一種方式是,where子句轉動第一left joininner join。因此,您不會從您期望的查詢中獲取所有行。事實上,你可能沒有得到任何一個。

SELECT ao.id AS a_id, e.id AS e_id, e.name AS evidence_name, 
     u.x_account_username AS username, 'evidence_edit' AS type 
FROM x_ambition_owner ao 
LEFT JOIN x_evidence e 
    ON ao.id = e.ambition_id 
    AND e.updated BETWEEN '2014-03-19 10:16:00' AND '2014-03-19 11:16:00' 
LEFT JOIN x_user u 
    ON ao.profile_id = u.id; 

EDIT(由OP):

這是我將要使用的查詢:

SELECT e.id, e.name, u.x_account_username AS username, a.ambition_id 
FROM x_evidence e 
LEFT JOIN x_ambition_owner a 
ON e.ambition_id = a.ambition_id 
LEFT JOIN x_user u 
ON a.profile_id = u.id 
WHERE e.updated BETWEEN '2014-03-19 10:00:00' AND '2014-03-19 11:16:00' 
+0

這是我運行查詢後返回的內容,它現在獲取名稱,這很棒,但它沒有獲取證據ID或名稱,[鏈接](http://i.imgur。 com/vZ4ntX5.png) – cwiggo

+1

@Chris。 。 。據推測,這是因爲沒有人符合「更新」條件。 –

+0

它不工作,它可以與索引或類似的東西有關嗎? – cwiggo