Sql 将where子句集成到现有select语句以进行报告时出现问题
因此,我有两个查询—一个是当前创建的报告,另一个是我编写的用于向报告中添加更多数据的查询 我希望合并新查询,以便在ASP中调用时,数据显示在同一数据集中 我在放置新的where子句时遇到了问题,因此它只能提供我想要的东西。这些查询是独立工作的,但我似乎不知道如何将它们组合在一起,而不给我一大堆我不需要的额外数据 以下是原始查询:Sql 将where子句集成到现有select语句以进行报告时出现问题,sql,tsql,Sql,Tsql,因此,我有两个查询—一个是当前创建的报告,另一个是我编写的用于向报告中添加更多数据的查询 我希望合并新查询,以便在ASP中调用时,数据显示在同一数据集中 我在放置新的where子句时遇到了问题,因此它只能提供我想要的东西。这些查询是独立工作的,但我似乎不知道如何将它们组合在一起,而不给我一大堆我不需要的额外数据 以下是原始查询: SELECT transactions.date, transactions.Pcode, transactions.L, transactions.iL, tr
SELECT
transactions.date,
transactions.Pcode,
transactions.L,
transactions.iL,
transactions.q,
transactions.mTo
FROM
transactions,
productlist
WHERE
transactions.Pcode=productlist.Pcode
AND productlist.client=transactions.client
AND (transactions.mTo='NotAccepted' OR transactions.mTo = 'TheStage')
AND transactions.client=232 AND ( tophysical = 'Place1' OR fromphysical = 'Place1' )
AND transactions.Date>= '2012-10-01'
AND transactions.Date <= '2012-10-31 11:59:59 PM '
ORDER BY
mTo,
transactions.date,
transactions.pCode
我要集成的查询是:
SELECT
transactions.date,
transactions.pcode,
transactions.L,
transactions.iL,
transactions.qty,
transactions.mTo,
FROM
transactions,
productlist,
productarchive,
Shipping
WHERE
transactions.pcode=productlist.pcode
AND productlist.client=transactions.client
AND transactions.mFrom='NotAccepted'
AND ProductArchive.TrID=Transactions.ID
AND ProductArchive.StID = Shipping.ID
AND Shipping.SID LIKE 'BAG%'
AND transactions.Date>= '2012-10-01'
AND transactions.Date <= '2012-10-31 11:59:59 PM '
我提出的最后一个问题给了我比我想要的多数万条记录
SELECT
transactions.date,
transactions.pCode,
transactions.L,
transactions.iL,
transactions.q,
transactions.mTo
FROM
transactions,
productlist,
shipping,
ProductArchive
WHERE
transactions.pCode=productlist.pCode
AND productlist.client=transactions.client
AND (transactions.mTo='NotAccepted' OR transactions.mTo = 'TheStage' OR transactions.mFrom='NotAccepted')
AND transactions.client=232
AND
( tophysical = 'Place1' OR fromphysical = 'Place1' OR
( ProductArchive.TransID=Transactions.ID
AND ProductArchive.StID = Shipping.ID
AND Shipping.SID LIKE 'BAG%')
)
AND transactions.Date>= '2012-10-01'
AND transactions.Date <= '2012-10-31 11:59:59 PM '
ORDER BY
transactions.mTo,
transactions.date,
transactions.pCode
感谢您的时间、精力和帮助!非常感谢:根据我的评论,使用UNION ALL可能更容易,我还更新了使用ANSI JOIN语法:
SELECT
transactions.date,
transactions.Pcode,
transactions.L,
transactions.iL,
transactions.q,
transactions.mTo
FROM
transactions,
productlist
WHERE
transactions.Pcode=productlist.Pcode
AND productlist.client=transactions.client
AND (transactions.mTo='NotAccepted' OR transactions.mTo = 'TheStage')
AND transactions.client=232 AND ( tophysical = 'Place1' OR fromphysical = 'Place1' )
AND transactions.Date>= '2012-10-01'
AND transactions.Date < '2012-11-01'
ORDER BY
mTo,
transactions.date,
transactions.pCode
union all
SELECT
transactions.date,
transactions.pcode,
transactions.L,
transactions.iL,
transactions.qty,
transactions.mTo,
FROM
transactions,
productlist,
productarchive,
Shipping
WHERE
transactions.pcode=productlist.pcode
AND productlist.client=transactions.client
AND transactions.mFrom='NotAccepted'
AND ProductArchive.TrID=Transactions.ID
AND ProductArchive.StID = Shipping.ID
AND Shipping.SID LIKE 'BAG%'
AND transactions.Date>= '2012-10-01'
AND transactions.Date < '2012-11-01'
SELECT transactions.date,
transactions.Pcode,
transactions.L,
transactions.iL,
transactions.q,
transactions.mTo,
'query 1' source
FROM transactions
INNER JOIN productlist
ON transactions.Pcode=productlist.Pcode
AND productlist.client=transactions.client
WHERE (transactions.mTo='NotAccepted' OR transactions.mTo = 'TheStage')
AND transactions.client=232 AND ( tophysical = 'Place1' OR fromphysical = 'Place1' )
AND transactions.Date>= '2012-10-01'
AND transactions.Date <= '2012-10-31 11:59:59 PM '
UNION ALL
SELECT transactions.date,
transactions.pcode,
transactions.L,
transactions.iL,
transactions.qty,
transactions.mTo,
'query 2' source
FROM transactions
INNER JOIN productlist
ON transactions.pcode=productlist.pcode
AND productlist.client=transactions.client
INNER JOIN productarchive
ON ProductArchive.TrID=Transactions.ID
INNER JOIN Shipping
ON ProductArchive.StID = Shipping.ID
WHERE transactions.mFrom='NotAccepted'
AND Shipping.SID LIKE 'BAG%'
AND transactions.Date>= '2012-10-01'
AND transactions.Date <= '2012-10-31 11:59:59 PM '
如果列相同,为什么不使用UNION ALL?只需将子句合并在一起?是的,这很有道理。非常感谢!我让工会站在我这边,它运作得很好@用户1757399至少暂时使用这个-确保您使用UNION ALL,然后您将不会删除重复项,除非这是您想要的。然后,您可以花时间尝试将查询合并为一个查询以复制数据: