我有一个查询中4个表来选择多个值,但是我只需要一个内部的比赛在两个表的连接这是我的查询:查询内重复数据
SELECT [dbo].[CHEQUES].Fecha,
[dbo].[TURNOS].Descripcion,
[dbo].[CAPMO].Clave_PDV,
[dbo].[CAPMO].Pla AS Platillo_Id,
[dbo].[CAPMO].Descripcion,
[dbo].[CAPMO].Precio_Neto AS PrecioPlatillo,
[dbo].[CAPMO].Can AS CantidadPlatillo
FROM [dbo].[CAPMO]
INNER JOIN [dbo].[CHEQUES] ON [dbo].[CAPMO].Clave_PDV = [dbo].[CHEQUES].Cla_PDV AND [dbo].[CAPMO].Che = [dbo].[CHEQUES].Che
INNER JOIN [dbo].[PLATILLOS] ON [dbo].[CAPMO].Pla = [dbo].[PLATILLOS].Pla
INNER JOIN [dbo].[TURNOS] ON [dbo].[CHEQUES].Tur = [dbo].[TURNOS].Tur
这是我
**[dbo].[CHEQUES]:
|Cla_Pdv | Che | Fecha | Tur |**
---------------------------------------------------
| FUEM | 4423 |2016-01-01 | 2 |
---------------------------------------------------
**[dbo].[TURNO]:
|Clave_Pdv | Tur | Descripcion |**
-----------------------------------------------
| FUEM | 1 | DESAYUNOS |
-----------------------------------------------
| FUEM | 2 | COMIDAS |
-----------------------------------------------
| FUEM | 3 | CENAS |
-----------------------------------------------
**[dbo].[CAPMO]:
|Clave_Pdv | Che | Com | Pla | Descripcion | Precio_Neto | Can |**
--------------------------------------------------------------------------------------------------------
| FUEM | 4423 | 1 | 184 | POZ | 85 | 1 |
------------------------------------------------------------------------------------------------------
| FUEM | 4423 | 2 | 184 | POZ | 85 | 1 |
------------------------------------------------------------------------------------------------------
| FUEM | 4423 | 3 | 184 | POZ | 84 | 1 |
------------------------------------------------------------------------------------------------------
**[dbo].[Platillos]:
| Pla | Des | Pre |**
------------------------------------
| 184 | 4423 | 85 |
------------------------------------
| 244 | 4423 | 84 |
------------------------------------
我的实际输出给我很多数据,并建议立即进行删除只给我3行数据 的这是我的输出数据:
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 85 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 85 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 85 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 85 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 85 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 85 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 85 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 85 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 244 | AGUA | 84 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 244 | AGUA | 84 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 244 | AGUA | 84 | 1 |
| 2016-01-01 | COMIDAS | 4423 | FUEM | 244 | AGUA | 84 | 1 |
但我需要我的输出是:
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 85 | 2|
| 2016-01-01 | COMIDAS | 4423 | FUEM | 184 | POZ | 84 | 1|
由于有3条线在我的[DBO] .CAPMO但其中1具有相同的“解放军”值,所以我必须增加的“外壳”项目为同样的表'[dbo]。[CAPMO]'那就是为什么我需要我的输出,但在我的实际输出中,它似乎将其乘以四列中的实际值
我在做什么错?
UPDATE
我更新我的查询得到公正正是我想要的输出,但我不得不削减一个表我的查询我我的查询更新,以这样的:
SELECT [dbo].[CHEQUES].Fecha,
[dbo].[CHEQUES].Che,
[dbo].[CAPMO].Clave_PDV,
[dbo].[CAPMO].Pla AS Platillo_Id,
[dbo].[CAPMO].Descripcion,
[dbo].[CAPMO].Precio_Neto AS PrecioPlatillo,
sum([dbo].[CAPMO].Can) AS CantidadPlatillo
FROM [dbo].[CAPMO]
Left JOIN [dbo].[Cheques] on [dbo].[Capmo].Che = [dbo].[Cheques].Che
group by [dbo].[CHEQUES].Fecha,[dbo].[CHEQUES].Che, [dbo].[CAPMO].Clave_PDV,[dbo].[CAPMO].Pla,[dbo].[CAPMO].Descripcion,[dbo].[2016_01_01_CAPMO].Precio_Neto
这个新查询让我的输出:
| 2016-01-01 | 4423 | FUEM | 184 | POZ | 85 | 2|
| 2016-01-01 | 4423 | FUEM | 184 | POZ | 84 | 1|
它给我我需要的数据,正确的数量增加,但我还是老样子需要1列匹配。ES的[DBO] [TURNOS],就像这个JOIN:
JOIN [dbo].[2016_01_01_TURNOS] ON [dbo].[2016_01_01_CHEQUES].Tur = [dbo].[2016_01_01_TURNOS].Tur
但添加一个新加入到我的查询乘我的结果,我只需要在相同的输出我有,但随着数据的列[dbo]。[Turnos],我该怎么做?
如你所知内部联接产生取决于你连接表(行)笛卡尔积,这就是为什么你会看到更多的记录比预期的,有关使用派生表得到你想要的结果,然后再加入必要的什么,或者在查询中删除不必要的表格,只需使用获取输出所需的表格即可。 – jthalliens
即时通讯使用的唯一一个我需要的输出,我需要从4个diferent表,但数据的特定内部联接这个问题应该是我应该如何改变我的查询现场检查和CApmo之间? –
Mysql和ms sql是两种不同的产品。你使用哪一个? – Shadow