2011-07-13 84 views
2

我有一個在這裏查詢是可以在pgAdmin,但是當我轉移它在zend它總是說一個錯誤:subquery must return only one column等等等等。有人可以區分這個問題嗎?子查詢必須只返回一列

SELECT "trail_history"."new_audit_trail".*, 
     (SELECT "admin".list_category_values_new."values" 
      FROM "admin".list_category_values_new 
      WHERE CAST(seq AS character varying) = "trail_history"."new_audit_trail"."current_value" 
      AND "name" = "trail_history"."new_audit_trail"."name") as "values" 
    FROM "trail_history"."new_audit_trail" 
    WHERE (capno LIKE '12101062411001%') 
    AND (recon = '0') 
ORDER BY "date_happened" DESC 

回答

1

你的子選擇(選擇「管理員」 .list_category_values_new。「值」 ......)沒有任何關係,防止它返回多個行。您需要使用TOP 1或MAX或其他來確保子選擇中只有一條記錄。

您可以關聯子查詢,以便您的主select中的每條記錄獲取不同的單個值,但是如果您要使用子選擇,它只能在main的每行輸出中返回一行選擇。

+1

這裏的術語混淆。錯誤是子查詢應該只返回一個*列*,但它選擇了多個。然而,你是正確的..它只能用這裏使用的方式返回一行。如果列錯誤得到糾正,則行錯誤將是下一個。 –

+0

我認爲@OP的問題在術語中包含一個小錯誤。顯然,指定的子查詢只返回一列。然而,多行的可能性顯然會成爲一個問題。 –

+0

@ joel-brown看起來PostgreSQL在術語中遇到了小錯誤:它是標準錯誤消息。 –