2017-02-13 20 views
0

选择我有2个表中包含的数据: TRANSM TRANSD 该表可在以下语法在SQL

看到当我使用类似语法如下:

SELECT M.Kode_Project, M.Nama_Project, M.Kode_Panel, 
     M.Nama_Panel,D.Kode_Stater, 
     D.Nama_Stater1, 
     D.Tipe, D.Komponen, D.Pole, D.Amps, D.Merek, D.Qty, 
     D.IsTitipan 
FROM TransM M 
INNER JOIN TransD D 
    ON M.Kode_Project = D.Kode_Project 
     AND M.Kode_Panel = D.Kode_Panel 
WHERE (M.Kode_Project = '17-0002') 
    AND (M.Kode_Panel = 'A') 

Tables And Result

我的语法有什么问题?请帮助我

+0

没有什么不对您的语法(这将导致错误),你的期望是关闭的。您将加入2条相同的记录(与加入条件相同)和4条其他相同的记录。你得到一个笛卡尔积(4 * 2 = 8)。看起来你可以通过在连接中使用'Kode_Stater'来减少它,但这仍然不是唯一的。你应该问知道你的数据和表格的人是什么样的正确的连接条件。 – HoneyBadger

回答

0

可能是你所需要的不同的结果(这应该删除重复的行)

SELECT DISTINCT 
      M.Kode_Project, M.Nama_Project, M.Kode_Panel, 
      M.Nama_Panel,D.Kode_Stater, 
      D.Nama_Stater1, 
      D.Tipe, D.Komponen, D.Pole, D.Amps, D.Merek, D.Qty, 
      D.IsTitipan 
    FROM TransM M 
    INNER JOIN TransD D 
     ON M.Kode_Project = D.Kode_Project 
      AND M.Kode_Panel = D.Kode_Panel 
    WHERE (M.Kode_Project = '17-0002') 
     AND (M.Kode_Panel = 'A') 
+0

当你使用选择不同的结果将是错误的,因为结果将只有2条记录。真正的结果必须出现4条记录 – Keshin

+0

然后更新你的问题,并添加真正的预期结果..因为不清楚你需要什么.. – scaisEdge