2015-02-23 53 views
2

我遇到了一個正在處理的項目的問題。有條件的Mysql子查詢,不同的結果

我有2個表格。第一張桌子是workorder。此表包括以下欄:

  • ID
  • relation_code
  • 產生
  • exportready

第二個表是workorder_records。專欄:

  • ID
  • workorder_id
  • 描述
  • 批准

,我需要選擇每workorder其中產生= 0和exportready = 0,其記錄計數。但是,只有批准= 0和描述!=''的記錄。

我寫此查詢它:

SELECT *, (SELECT COUNT(*) FROM workorder_records 
WHERE workorder_records.approved = 0 
AND workorder_records.workorder_id = workorder.id 
AND workorder_records.description != '' 
) as totalunapproved 
FROM workorder 
WHERE workorder.generated = 0 
AND workorder.exportready = 0 

我得到正確的結果,當我在phpMyAdmin執行此。當我通過連接到同一個數據庫的PHP腳本運行這個時,我得到了不同的結果。例如,其中workorder_records.description實際上是空的,但仍由查詢函數返回。

SQL小提琴鏈接:http://sqlfiddle.com/#!2/ea8aa/3

任何幫助表示讚賞。

編輯:我通過在PHP中執行檢查來解決問題。這當然不是理想的,但我只是不明白爲什麼條件子查詢在PHPMyAdmin中工作,而不是在我的PHP腳本中。

+0

此查詢應該做你想做的事情,結果應該是穩定的。你可以設置一個SQL小提琴來演示這個問題嗎? – 2015-02-23 12:08:48

+0

SQL小提琴:http://sqlfiddle.com/#!2/ea8aa/3 – 2015-02-23 14:21:19

+0

爲什麼選擇我們?這似乎可以通過標準連接完成。 – 2015-02-23 14:26:15

回答

0

嘗試更換此

workorder_records.description != '' 

workorder_records.description IS NOT NULL 

,默認爲空做workorder_records.description。

+0

可惜這沒有幫助。 – 2015-02-23 14:38:20