我有一個查詢中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