簡體   English   中英

在查詢中組合多個表(SQL、MS Access)

[英]Combining Multiple tables in Query (SQL, MS Access)

我需要查詢 3 個表並將數據放入一個表中。

Complexity_Matrix - (`Project`, `Function`, `Complexity`)
Project_Phase_Selection - (`Project`, `Month`, `Phase`)
Complexity_Data_Sheet - (`Function`, `Complexity`, `Phase`, `Needed`)

Complexity_Matrix - 一個項目有大約 10 個功能,每個 function 對於一個項目處於不同的復雜程度

CREATE TABLE Complexity_Matrix
    (`Project` varchar(31), `Function` varchar(10), `Complexity` varchar(6))
;

INSERT INTO Complexity_Matrix
    (`Project`, `Function`, `Complexity`)
VALUES
    ('3D Templates - Project DeLorean', 'Clinical', 'Low'),
    ('3D Templates - Project DeLorean', 'GSM', 'Medium'),
    ('3D Templates - Project DeLorean', 'HEMA', 'Low'),
    ('3D Templates - Project DeLorean', 'Medical', 'Medium'),
    ('3D Templates - Project DeLorean', 'PJM', 'Low'),
    ('3D Templates - Project DeLorean', 'Quality', 'Medium'),
    ('3D Templates - Project DeLorean', 'R&D', 'Low'),
    ('3D Templates - Project DeLorean', 'Regulatory', 'Medium'),
    ('3D Templates - Project DeLorean', 'SC', 'Medium'),
    ('3D Templates - Project DeLorean', 'Sourcing', 'Medium'),
    ('4.5mm Distal Femur Plate (VET)', 'Clinical', 'Low'),
    ('4.5mm Distal Femur Plate (VET)', 'GSM', 'Low'),
    ('4.5mm Distal Femur Plate (VET)', 'HEMA', 'Low'),
    ('4.5mm Distal Femur Plate (VET)', 'Medical', 'Low'),
    ('4.5mm Distal Femur Plate (VET)', 'PJM', 'Low'),
    ('4.5mm Distal Femur Plate (VET)', 'Quality', 'Low'),
    ('4.5mm Distal Femur Plate (VET)', 'R&D', 'Low'),
    ('4.5mm Distal Femur Plate (VET)', 'Regulatory', 'Low'),
    ('4.5mm Distal Femur Plate (VET)', 'SC', 'Low'),
    ('4.5mm Distal Femur Plate (VET)', 'Sourcing', 'Low')
;


CREATE TABLE Project_Phase_Selection
    (`Project` varchar(31), `Month` datetime, `Phase` varchar(1))
;

INSERT INTO Project_Phase_Selection
    (`Project`, `Month`, `Phase`)
VALUES
    ('3D Templates - Project DeLorean', '2019-01-01 00:00:00', '3'),
    ('3D Templates - Project DeLorean', '2019-02-01 00:00:00', '3'),
    ('3D Templates - Project DeLorean', '2019-03-01 00:00:00', '3'),
    ('3D Templates - Project DeLorean', '2019-04-01 00:00:00', '3'),
    ('3D Templates - Project DeLorean', '2019-05-01 00:00:00', '3'),
    ('3D Templates - Project DeLorean', '2019-06-01 00:00:00', '3'),
    ('3D Templates - Project DeLorean', '2019-07-01 00:00:00', '3'),
    ('3D Templates - Project DeLorean', '2019-08-01 00:00:00', '4'),
    ('3D Templates - Project DeLorean', '2019-09-01 00:00:00', '4'),
    ('3D Templates - Project DeLorean', '2019-10-01 00:00:00', '4'),
    ('3D Templates - Project DeLorean', '2019-11-01 00:00:00', '4'),
    ('3D Templates - Project DeLorean', '2019-12-01 00:00:00', '4'),
    ('4.5mm Distal Femur Plate (VET)', '2019-01-01 00:00:00', 'C'),
    ('4.5mm Distal Femur Plate (VET)', '2019-02-01 00:00:00', 'C'),
    ('4.5mm Distal Femur Plate (VET)', '2019-03-01 00:00:00', 'C'),
    ('4.5mm Distal Femur Plate (VET)', '2019-04-01 00:00:00', '1'),
    ('4.5mm Distal Femur Plate (VET)', '2019-05-01 00:00:00', '1'),
    ('4.5mm Distal Femur Plate (VET)', '2019-06-01 00:00:00', '1'),
    ('4.5mm Distal Femur Plate (VET)', '2019-07-01 00:00:00', '2'),
    ('4.5mm Distal Femur Plate (VET)', '2019-08-01 00:00:00', '2'),
    ('4.5mm Distal Femur Plate (VET)', '2019-09-01 00:00:00', '2'),
    ('4.5mm Distal Femur Plate (VET)', '2019-10-01 00:00:00', '2'),
    ('4.5mm Distal Femur Plate (VET)', '2019-11-01 00:00:00', '2'),
    ('4.5mm Distal Femur Plate (VET)', '2019-12-01 00:00:00', '3')
;

CREATE TABLE Complexity_Data_Sheet
    (`Function` varchar(8), `Complexity` varchar(6), `Phase` varchar(1), `Needed` int)
;

INSERT INTO Complexity_Data_Sheet
    (`Function`, `Complexity`, `Phase`, `Needed`)
VALUES
    ('Clinical', 'Low', 'A', 0),
    ('Clinical', 'Low', 'B', 0),
    ('Clinical', 'Low', 'C', 0.05),
    ('Clinical', 'Low', '1', 0.2),
    ('Clinical', 'Low', '2', 0.3),
    ('Clinical', 'Low', '3', 0.5),
    ('Clinical', 'Low', '4', 0.5),
    ('Clinical', 'Low', '5', 0.1),
    ('Clinical', 'Low', '6', 0.05),
    ('Clinical', 'Medium', 'A', 0),
    ('Clinical', 'Medium', 'B', 0),
    ('Clinical', 'Medium', 'C', 0.1),
    ('Clinical', 'Medium', '1', 0.4),
    ('Clinical', 'Medium', '2', 0.6),
    ('Clinical', 'Medium', '3', 0.8),
    ('Clinical', 'Medium', '4', 0.8),
    ('Clinical', 'Medium', '5', 0.2),
    ('Clinical', 'Medium', '6', 0.05),
    ('Clinical', 'high', 'A', 0),
    ('Clinical', 'high', 'B', 0),
    ('Clinical', 'high', 'C', 0.2),
    ('Clinical', 'high', '1', 1),
    ('Clinical', 'high', '2', 1.5),
    ('Clinical', 'high', '3', 2.5),
    ('Clinical', 'high', '4', 2),
    ('Clinical', 'high', '5', 0.5),
    ('Clinical', 'high', '6', 0.1)
;

我嘗試了以下內容:

SELECT distinct Complexity_Matrix.Project, Project_Phase_Selection.Month, Project_Phase_Selection.Phase,Complexity_Matrix.Function, Complexity_Matrix.Complexity, Complexity_Data_Sheet.Needed FROM (Project_Phase_Selection INNER JOIN Complexity_Data_Sheet ON Project_Phase_Selection.[Phase] = Complexity_Data_Sheet.[Phase]) INNER JOIN Complexity_Matrix ON (Complexity_Data_Sheet .[Complexity] = Complexity_Matrix.[Complexity]) AND (Complexity_Data_Sheet.[Function] = Complexity_Matrix.[Function]) ORDER BY Complexity_Matrix.Function, Complexity_Matrix.Project, Complexity_Matrix.Function, Complexity_Matrix.Complexity, Project_Phase_Monthase_SP.P.Phase ;

所以我需要查詢這 3 個表並需要一個像 Project, Function,Month,Phase,Complexity,Needed 這樣的結果

僅適用於所有匹配的列值,並且需要結果列。

但是我得到了所有字段的所有值而不是不同的值。 請幫忙

你可以試試這段代碼:

select CM.Project, CM.function,PPS.Month,PPS.Phase,CDS.Complexity,CDS.Needed
from Complexity_Matrix CM
INNER JOIN Project_Phase_Selection PPS on CM.[Project]=PPS.[project]
INNER JOIN Complexity_Data_Sheet CDS on CM.[function]=CDS.[function] and CM.[Complexity]=CDS.[Complexity] and PPS.[Phase]=CDs.[Phase]
group by CM.Project, CM.function,PPS.Month,PPS.[Phase],CDS.Complexity,CDS.Needed

演示

SELECT DISTINCT CM.Project, CM.function, PPS.Month, PPS.Phase, CDS.Complexity, CDS.Needed
FROM (Complexity_Matrix AS CM 
INNER JOIN Project_Phase_Selection AS PPS ON CM.[Project]=PPS.[project]) 
INNER JOIN Complexity_Data_Sheet AS CDS ON (CM.[Complexity]=CDS.[Complexity] ) AND (CM.[function]=CDS.[function]) AND (PPS.[Phase]=CDS.[Phase])
GROUP BY CM.Project, CM.function, PPS.Month, PPS.[Phase], CDS.Complexity, CDS.Needed;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM