1
  • ローン (列: id、ユーザー)
  • 回収 (列: id、分割払い、予定日)

ローンが 12 回の分割払いで支払われる場合、ローン ID を持つ 12 の回収レコードがあります。

すべての回収の合計が 2000 より大きい scheduleDate を持つユーザーを見つけたいと思います。

SELECT user 
FROM {loans} ka 
WHERE 
(
   SELECT MAX(inst) FROM 
   (
        SELECT SUM(installment) AS inst 
        FROM {payback} 
        WHERE id IN 
        (
            SELECT id 
            FROM {loans} 
            WHERE user = ka.user
        )  
   GROUP BY scheduleDate
   ) as t1 LIMIT 0,1
) > 2000

エラーが表示されます: 'where 句' の列 'ka.user' が不明です

4

1 に答える 1

0

これは要求どおりに機能しますか? payback.id は、loads.id を参照する外部キーであると想定しています。

SELECT
  user, scheduleDate, sumInstallments
FROM
(
    SELECT
      l.user, pb.scheduleDate, SUM(pb.installment) AS sumInstallments
    FROM
      payback AS pb
    JOIN
      loans AS l
    ON
      l.id = pb.id
    GROUP BY
      l.user, pb.scheduleDate
) AS tempId
WHERE
  sumInstallments > 2000
于 2010-10-03T15:12:10.540 に答える