【问题标题】:sql inner join view tablesql内连接视图表
【发布时间】:2013-11-22 01:13:29
【问题描述】:

我需要通过“视图”连接 2 个表,以获取每个人(IdData)、他有多少个账户以及存入了多少存款。我要获取的列是:IdDataNUmberOfAccountsNumberOfDeposits

帐户:

  • 帐户编号
  • 日期帐户
  • 价值
  • IdData

存款:

  • 存款号码
  • 存款日期
  • 价值存款
  • 帐号(外键)

我不知道如何加入这些信息。分开看是这样的。我需要以某种方式加入他们。

select count(Accounts.AccountNUmber) as NUmberOfAccounts,IdData
from Accounts
group by IdData

select count(Deposits.AccountNUmber) as NumberOfDeposits,IdData
from Deposits inner join Accounts on Deposits.AccountNUmber=Accounts.AccountNUmber
group by IdData

【问题讨论】:

  • 请设置一个 SQL Fiddle

标签: mysql sql join view


【解决方案1】:

你可以试试这个查询:

选择一个.idData, count(a.accountNumber) 作为 NumberOfAccounts, (select count(depositNumber) from deposit 其中 accountNumber = a.idData) 作为 NumberOfDeposits 从账户 a 按 idData 分组

这是fiddle

【讨论】:

    【解决方案2】:

    只需使用这样的子查询:

    SELECT a.idData,
    count(a.AccountNumber) AS NumberOfAccounts,
    (
         SELECT count(depositNumber) FROM deposits as b 
         WHERE b.accountNumber = a.accountNumber
    ) 
    AS NumberOfDeposits
    FROM accounts a
    GROUP BY iddata;
    

    这里是Fiddle

    【讨论】:

    • 它不工作,有一些错误 -> Msg 8120, Level 16, State 1, Procedure cerinta5, Line 3 列 'deposits.accountnumber' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    相关资源
    最近更新 更多