【问题标题】:How Can I merge these two Access Sql queries如何合并这两个 Access Sql 查询
【发布时间】:2015-06-29 16:06:19
【问题描述】:

我想将这两个查询合并为一个查询。 这是代码。 两者都是一张表,但您会看到来自不同部分的不同数据。 我只想用一个查询记录一条记录。

> DoCmd.RunSQL "insert into Report (id, [date], namep , [NEXTC],
> [Nurse])" & _ " values (" & Chr(34) & x & Chr(34) & " ," & Chr(34) & b
> & Chr(34) & "," & "5," & _ " " & Chr(34) & c & Chr(34) & ", " &
> Chr(34) & n & Chr(34) & ")"

还有这个

DoCmd.RunSQL "INSERT INTO Report ( brand, Bag, Acc, Id , NameP)" & _
"Select Top 1 * from" & _
    "(SELECT TOP 1 Brand FROM (SELECT * FROM Report WHERE ID=" & _
    x & _
    ") WHERE Brand IS NOT NULL ORDER BY date DESC Union All SELECT top 1 null FROM report WHERE Brand IS NULL) AS Brand," & _
    "(SELECT TOP 1 Bag FROM (SELECT * FROM Report WHERE ID=" & _
    x & _
    ") WHERE Bag IS NOT NULL ORDER BY date DESC Union All SELECT top 1 null FROM report WHERE Bag IS NULL) AS Bag," & _
    "(SELECT TOP 1 ACC FROM (SELECT * FROM Report WHERE ID=" & _
    x & _
    ") WHERE ACC IS NOT NULL ORDER BY date DESC Union All SELECT top 1 null FROM report WHERE ACC IS NULL) AS ACC," & _
 "(SELECT TOP 1 ID FROM Report WHERE ID=" & _
 x & _
 ") AS ID," & _
 "( SELECT TOP 1 NameP FROM Report WHERE ID=" & _
 x & _
 ") as NameP;"

【问题讨论】:

  • 它不允许我这样做INSERT INTO Report ( brand, Bag, Acc, Id) Select Top 1 * from ((SELECT TOP 1 Brand FROM (SELECT Brand,date FROM Report WHERE ID= x) WHERE Brand IS NOT NULL), '','',5022)
  • 你能展示一些示例数据吗?您的问题无法理解。

标签: sql vba ms-access select insert


【解决方案1】:

测试一下,它应该可以工作(可能有些括号是错误的,使用前检查一下):

DoCmd.RunSQL "insert into Report (id, [date], namep , [NEXTC], [Nurse], brand, Bag, Acc, Id , NameP)" & _
" values (" & Chr(34) & x & Chr(34) & " ," & Chr(34) & b & Chr(34) & "," & "5," & _
" " & Chr(34) & c & Chr(34) & ", " & Chr(34) & n & Chr(34) & ", " & _
"(SELECT TOP 1 Brand FROM (SELECT * FROM Report WHERE ID=" & x & _
") WHERE Brand IS NOT NULL ORDER BY date DESC Union All SELECT top 1 null FROM report WHERE Brand IS NULL) AS Brand " & ", " & _
"(SELECT TOP 1 Bag FROM (SELECT * FROM Report WHERE ID=" & x & _
") WHERE Bag IS NOT NULL ORDER BY date DESC Union All SELECT top 1 null FROM report WHERE Bag IS NULL) AS Bag " & ", " & _
"(SELECT TOP 1 ACC FROM (SELECT * FROM Report WHERE ID=" & x & _
") WHERE ACC IS NOT NULL ORDER BY date DESC Union All SELECT top 1 null FROM report WHERE ACC IS NULL) AS ACC " & ", " & _
"(SELECT TOP 1 ID FROM Report WHERE ID=" & x & ") AS ID," & _
 "( SELECT TOP 1 NameP FROM Report WHERE ID=" & x & ") as NameP )"

【讨论】:

    【解决方案2】:

    您的查询不清楚,但您的查询应该是这样的:

    INSERT INTO Report (id, [date], namep , [NEXTC], [Nurse], brand, Bag, Acc, Id , NameP)
    SELECT TOP 1 'value1', 'value2', ..., FROM yourTable ...
    

    使用INSERT INTO SELECT

    value1, value2 可以是统计数据,但您也可以从yourtable 获得一些价值

    【讨论】:

    • 它说这个操作在子查询中是不允许的!
    • 您应该查看您的查询。如果您想从SELECT 语句中使用INSERT,可以使用INSERT INTO SELECT
    • 如果你检查第二个查询它是用 select 插入的,我已经使用它
    • access sql查询中可以使用变量吗?
    • 你可以。 SELECT 'a', a FROM table。第一个 a 是实际 a 但第二个 a 来自表
    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 2019-02-16
    • 2020-07-08
    • 2012-09-02
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多