2017-06-20 94 views
0

我有2個表:選擇內選擇工作不正常,並顯示錯誤

t_orderPayment with n_id,n_order,n_paytype AND 
t_paytype with n_ID , str_desc 

我的查詢是:

SELECT t_OrderPayment.n_order , 
t_OrderPayment.n_paytype = (select t_paytype.str_desc as n_paytype from t_PayType, t_orderpayment where t_OrderPayment.n_PayType = t_PayType.n_ID) 
FROM t_OrderPayment 
WHERE (((t_OrderPayment.n_PaymentStatus)<>-7)) ; 

它返回錯誤

「最多一個記錄可以此子查詢」

返回

我試圖用MAX和TOP 1像n_paytype =(選擇最大(t_paytype.str_desc)設置,但表明了我錯誤Expr1001 Str.desc只有文本值,這可能是原因。可能是INNER JOIN可以幫助我嗎?

+0

您可以格式化代碼並指定期望的結果是什麼? –

+0

哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)您使用的? –

+1

如果此查詢'從t_PayType中選擇t_paytype.str_desc作爲n_paytype,t_orderpayment其中t_OrderPayment.n_PayType = t_PayType.n_ID'返回多個標量值,則不能在分配子選擇內使用它... – Shnugo

回答

1

看起來你不小心做了一個交叉連接。您不需要在子查詢中第二次參考t_OrderPayment表 - 嘗試刪除(但將where子句保留爲將它鏈接到外部查詢的那個子句)。它看起來像整個子查詢可以去掉,變成一個連接,但...

SELECT t_OrderPayment.n_order, 
     t_paytype.str_desc AS n_paytype 
FROM t_OrderPayment 
     INNER JOIN t_PayType 
       ON t_OrderPayment.n_PayType = t_PayType.n_ID 
WHERE t_OrderPayment.n_PaymentStatus <> -7; 
0

SELECT t_OrderPayment.n_order, t_paytype.str_desc AS n_paytype FROM t_OrderPayment,t_PayType WHERE t_OrderPayment.n_PayType = t_PayType.n_ID AND t_OrderPayment.n_PaymentStatus <> -7;