2016-10-30 197 views
0

我試圖做這樣的事情:查詢在其他查詢

SELECT 
fk_activity_id AS KeyId, 
data, 
created_on, 
(SELECT 
     data 
    FROM 
     activity_queue_data 
    WHERE 
     activity_queue_data.key = 'data' 
      AND activity_queue_data.activity_data_id = KeyId) 
FROM 
    activity_queue_data 
WHERE 
    activity_queue_data.key = 'filename' 
LIMIT 100; 

的問題,我有一個這樣的表:

table description

而且信息的存儲這樣

table content

這是遺留代碼,我不能修改此代碼...

但我想在相同的查詢中獲取每個文件的內容和名稱......任何想法......?

回答

0

如果查詢你想要什麼,你需要表的別名和合格的列名:

SELECT aqd.fk_activity_id AS KeyId, aqd.data, aqd.created_on, 
     (SELECT aqd2.data 
     FROM activity_queue_data aqd2 
     WHERE aqd2.key = 'data' AND 
       aqd2.activity_data_id = aqd.KeyId -- this might be backwards 
     ) as other_data 
FROM activity_queue_data aqd 
WHERE aqd.key = 'filename' 
LIMIT 100; 

一些建議:使用表別名和合格的列名在引用多個表的任何查詢。這樣,你不必考慮什麼時候做正確的事情。

+0

我得到了這個迴應'錯誤代碼:1054.'where子句'中的未知列'aqd.KeyId' – aasanchez

+1

@aasanchez。 。 。這是一個錯字。 –