отображение данных из нескольких таблиц - PullRequest
0 голосов
/ 28 июня 2010

у меня есть 3 таблицы (SalesLog, Breakages, SalesReturn), я хочу отображать данные из этой таблицы как

ProductName          SalesQty         BreakQty        ReturnQty
ABCD                   1000              10              20

Таблица SalesLog

CREATE TABLE [dbo].[SalesLog](
[SalesID] [int] IDENTITY(1,1) NOT NULL,
[MemoNo] [int] NULL,
[ProductCode] [int] NULL,
[Quantity] [int] NULL,
[Price] [int] NULL,
[pGroup] [int] NULL,
[pName] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[pSize] [int] NULL,
[BillDate] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_SalesLog] PRIMARY KEY CLUSTERED 
(
[SalesID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

Таблица поломок

CREATE TABLE [dbo].[Breakages](
[breakId] [int] IDENTITY(1,1) NOT NULL,
[MemoNo] [int] NULL,
[SalesmanID] [int] NULL,
[ProductCode] [int] NULL,
[pName] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Quantity] [int] NULL,
[pGroup] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[BillDate] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[AddedOn] [datetime] NULL,
CONSTRAINT [PK_Breakages_1] PRIMARY KEY CLUSTERED 
(
[breakId] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

Таблица возврата продаж

CREATE TABLE [dbo].[SalesReturn](
[srID] [int] IDENTITY(1,1) NOT NULL,
[ProductCode] [int] NULL,
[Quantity] [int] NULL,
[pGroup] [int] NULL,
[MemoNo] [int] NULL,
[SalesmanID] [int] NULL,
[Price] [int] NULL,
[BillDate] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[AddedOn] [datetime] NULL,
CONSTRAINT [PK_SalesReturn] PRIMARY KEY CLUSTERED 
(
[srID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

Любая помощь будет оценена ..

Ответы [ 2 ]

1 голос
/ 28 июня 2010
Select 
      pname as ProductName ,
      ProductCode as pc
      Quantity as SalesQty ,
            (select
                    Quantity 
             from Breakages
             where Breakages.ProductCode = pc
             ) as BreakQty ,
             (select 
                    Quantity 
             from SalesReturn
             where ProductCode = pc) as ReturnQty 
      from SalesLog;
0 голосов
/ 28 июня 2010
SELECT
    sl.pName, 
    SUM(sl.Quantity) as TotalQty, 
    SUM(br.Quantity) as TotalBreakageQty, 
    SUM(sr.Quantity) as TotalReturnQty
FROM 
    SalesLog sl
    LEFT JOIN Breakages br ON sl.ProductCode = br.ProductCode
    LEFT JOIN SalesReturn sr ON sl.ProductCode = sr.ProductCode
GROUP BY 
    sl.pName

Это даст вам общее количество, сгруппированное по названию продукта.

Как правильно указывает AakashM, использование внутренних объединений будет возвращать только записи, которые имеют разрыв и возврат, поэтому я изменил их на левые объединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...