1

我有以下查询。如果我运行它,我会收到此错误消息

询问-

SELECT account_name,ABC,date FROM entries
    LEFT JOIN accounts ON accounts.id = entries.accounts_id
    LEFT JOIN voucher ON voucher.id = entries.trans_id 
    WHERE trans_id IN ( SELECT trans_id, amount AS ABC FROM entries 
                         WHERE accounts_id='$accounts_id' AND side='C') 
    AND accounts_id!='$accounts_id' AND side='D'
    AND voucher.date between '$dateragne1' AND '$dateragne2'

我认为问题在于 value ABC。它无法从第二个查询中获取值。

你能告诉我如何解决这个查询吗?

提前致谢 :)

4

1 回答 1

1

尝试这个:

SELECT account_name, _inner.ABC, date 
  FROM 
  (
     SELECT amount AS ABC FROM entries 
       WHERE accounts_id='$accounts_id' AND side='C'
  ) AS _inner, entries
  LEFT JOIN accounts ON accounts.id = entries.accounts_id
  LEFT JOIN voucher ON voucher.id = entries.trans_id
    WHERE trans_id IN 
    ( 
      SELECT trans_id FROM entries WHERE accounts_id='$accounts_id' AND side='C'
    ) 
AND accounts_id!='$accounts_id' AND side='D'
AND voucher.date between '$dateragne1' AND '$dateragne2'`

笔记:

  • 像这样使用子查询不允许您从中请求字段。
  • 此外,IN语句仅使用来自列的数据,而不是两个。
于 2012-06-20T23:55:26.257 回答