Sql server 从数据库中选择项目
我目前正在开发一个购物车,在管理方面,我正在尝试获取所有尚未发货的订单和物品。我正在使用下面的存储过程,但它并没有按我所希望的方式工作,它正在为购物车中的每个项目提取名称、发票、价格等,我想要的是提取一次订单信息,然后列出每个订单的所有项目及其数量和价格Sql server 从数据库中选择项目,sql-server,Sql Server,我目前正在开发一个购物车,在管理方面,我正在尝试获取所有尚未发货的订单和物品。我正在使用下面的存储过程,但它并没有按我所希望的方式工作,它正在为购物车中的每个项目提取名称、发票、价格等,我想要的是提取一次订单信息,然后列出每个订单的所有项目及其数量和价格 CREATE PROCEDURE dbo.sp_GetOrdersNotShipped AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from --
CREATE PROCEDURE dbo.sp_GetOrdersNotShipped
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
BEGIN TRY
SELECT
p.ProductName AS 'Name',
o.OrderId AS 'OrderId',
o.InvoiceNumber AS 'Invoice',
o.OrderTotal AS 'Total',
oi.ProductQuantity AS 'Quantity'
FROM
Products p INNER JOIN OrderItems oi ON p.ProductId = oi.ProductId
INNER JOIN Orders o on oi.OrderId = o.OrderId
WHERE
o.IsShipped = 0
END TRY
BEGIN CATCH
DECLARE @ErrorNumber INT = ERROR_NUMBER();
DECLARE @ErrorLine INT = ERROR_LINE();
DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();
DECLARE @ErrorSeverity INT = ERROR_SEVERITY();
DECLARE @ErrorState INT = ERROR_STATE();
PRINT 'Actual error number: ' + CAST(@ErrorNumber AS VARCHAR(10));
PRINT 'Actual line number: ' + CAST(@ErrorLine AS VARCHAR(10));
RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState);
END CATCH
END
GO
你能发布一个你正在寻找的示例结果和你当前得到的结果吗?你是说你只需要一行订单信息,然后是所有行项目?这有点奇怪。您要么需要两个查询,要么需要一个非常奇怪的联合版本。此外,应避免使用sp_uu前缀。您的记录集可能会恢复到应有的状态,每个细节行都会重复标题信息。在您的表示层SSRS、Crystal等,您可以指定显示一次标题信息及其下方的详细信息,直到标题下一次更改,然后重复。正如@SeanLange所说,一个记录集采用这种形式将需要一个非常不愉快的组合。您想要的结果集是什么样子的?应该有哪些栏目?