【问题标题】:Datagridview to list parent record and last child record onlyDatagridview 仅列出父记录和最后一个子记录
【发布时间】:2020-09-10 15:42:29
【问题描述】:

我有两张桌子 - t1 和 t2。 我正在尝试用公司 (t1) 填充 datagridview 并签署最后一份合同 (t2)。

我在 Visual Studio 2019 中使用带有 OLE 连接的 accdb。

我有 [t1].[ID] 一对多链接到 [t2].[t1ID]。

我刚刚试过select * from (t1 LEFT OUTER JOIN t2 ON t1.ID = (MAX (t1ID) FROM t2 WHERE t2.t1ID = t1.ID)

这给了我 WHERE 子句中的错误并且无法解析查询文本。

我正在将此输入到 Visual Studio 2019 中的 Dataset TableAdapter 查询中。

我只想得到一个结果:

公司 1 合同 2020

我目前得到:

company1 合同 2018

公司 1 合同 2019

公司 1 合同 2020

我已经试过了

(Client t1 LEFT OUTER JOIN
                     Contract t2 ON t1.ID = t2.ClientID AND t2.ID =
                         (SELECT        MAX(t2.ID) AS Expr1
                           FROM            t2
                           WHERE        (t1.ID = t2.ClientID)))

我现在有语法错误

【问题讨论】:

  • 它是 WinForms 应用程序吗?添加标签。 |您使用什么作为数据源:DataSet 还是类型化的类集合?
  • 我刚刚对数据集尝试了以下过滤器,但它不起作用。 WHERE Client.ID=Contract.ClientID 和 Contract.ID = MAX(ID)
  • 那么你的问题是关于如何写一个sql查询?
  • 我在 Visual Studio 2019 中使用带有 oledb 连接的 accdb 文件
  • 我认为您需要删除winformsdatagridviewbindingsource 标签,添加sql 标签,并通过尝试编写sql 查询来编辑问题正文在那里。

标签: c# sql tableadapter


【解决方案1】:

语法错误是在最后一个子查询 FROM t2 应该是 'Contract t2'

选择 t1., t2. FROM(客户端 t1 左外连接 合约 t2 ON t1.ID = t2.ClientID) 哪里(t2.ID = (选择 MAX(ID) 作为 Expr1 FROM 合同 t2 WHERE (t1.ID = ClientID)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 2017-07-22
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多