2010-10-03 68 views
1
  • 貸款(列:ID,用戶)
  • 回報(列:ID,分期付款,scheduleDate)

如果貸款是在12個分期支付,則有12貸款編號的回報記錄。Mysql的子查詢問題

我想找出用戶有scheduleDate上,他們的所有的回報的總和大於2000

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 

,我發現了錯誤: 未知列「ka.user」 in'where clause'

回答

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 
+0

是的,payback.id是loans.id的外鍵。現在我得到這個錯誤:「where子句」查詢中的未知列'sumInstallments' – MSto 2010-10-03 15:22:22

+0

呃,我希望它已經在WHERE子句中有可用的總和。我會在一分鐘內修復它。 – Thomas 2010-10-03 15:26:23

+0

@MSto:嘗試編輯的版本。抱歉關於試驗和錯誤。我現在沒有可用的db來玩,所以對我來說寫一個查詢是一個空轉。 ;) – Thomas 2010-10-03 15:30:20