2012-02-28 120 views
1

我有一個表格報告,其中包含了所有的信息和閱讀這只是有報告ID和IDMySQL的簡單嵌套查詢語句

我試圖做到這一點statment(報告所有者)的報告(指正如果那裏更好),那麼它會從讀取與ID 1匹配的報告中獲取所有報告ID,並從報告中爲其選擇所有詳細信息。 (報告ID的是相同的報告和閱讀報告)

但這種說法是給我回來沒有行:

SELECT a.* 
FROM `Reports` AS a, 
     (SELECT `Report ID` FROM `Read Reports` WHERE `Id` = 1) AS b 
     WHERE a.`Report ID` = b.`Report ID`; 

請告訴我錯了,/我怎麼能提高呢?

謝謝,

編輯:我不好,它工作正常! Id 1沒有報告。關閉這個。 :L

EDIT2:如果你有改進,但仍張貼:P

+0

編輯:我的壞,它工作正常! Id 1沒有報告。關閉這個。 :L – 2012-02-28 16:24:47

回答

2

試試這個:

SELECT a.*, (SELECT `Report ID` FROM `Read Reports` WHERE `Id` = 1) AS b_report_id 
FROM `Reports` AS a 
HAVING a.`Report ID` = b_report_id; 
+0

#1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到在'WHERE a.'Report ID' = b_report_id – 2012-02-28 16:11:49

+0

附近使用的正確語法。立即嘗試。在「From'Reports' as a」之後,我沒有刪除最後一個逗號。 – blaff 2012-02-28 16:12:50

+0

仍然沒有:(#1054 - 'where子句'中的未知列'b_report_id' – 2012-02-28 16:16:36

1

好像有什麼不對您的查詢,它應該返回的記錄,除非有沒有匹配記錄。但是如果您說有確實存在匹配記錄,我建議您重新閱讀您的查詢以確認您使用的是正確的列名稱,即未將「ID」替換爲「報告ID」?

你可以在你的文章中提供你的數據的快照嗎?

順便說一句,下面的查詢應該是更好,因爲它不涉及派生表:

SELECT `a`.* 
FROM `Reports` AS `a` 
INNER JOIN `Read Reports` AS `b` ON `a`.`Report ID` = `b`.`Report ID` 
WHERE `b`.`Id` = 1;