2个表上的内连接给出了错误的输出

时间:2017-04-21 06:04:00

标签: sql

我有2张桌子

1.安全表

Security Table
2.数据表
Data Table
现在用户A应该只从DATA1和DATA2列访问1001和3001。但是因为在编写INNER JOIN时它们不是单行,所以它给出了0条记录作为我的输出。

我正在寻找一个输出,其中用户A将能够看到1001和3001,而用户B将分别得到1001和3002,分别为10000和20000。

请建议。

提前致谢。

2 个答案:

答案 0 :(得分:2)

尝试:您可以通过以下方式获得所需的输出,我使用temporary table的{​​{1}},因此请根据您的需要进行更改。

SQLSERVER

输出:

CREATE TABLE #security(SRNO INT IDENTITY(1,1), UNAME VARCHAR(50), DATA1 INT, DATA2 INT)
INSERT INTO #security VALUES 
('A', 1001, NULL),
('A', NULL, 3001),
('B', 1001, NULL),
('B', NULL, 3002)

CREATE TABLE #data(DATA1 INT, DATA2 INT, AMT INT)
INSERT INTO #data VALUES 
(1001,3001,10000),
(1001,3002,20000),
(1002,3001,30000)

SELECT s.UNAME, d.DATA1, d.DATA2, d.AMT
FROM #data d
INNER JOIN (SELECT UNAME, 
        MAX(DATA1) DATA1, 
        MAX(DATA2) DATA2 
    FROM #security GROUP BY UNAME) s ON s.DATA1 = d.DATA1
        AND s.DATA2 = d.DATA2

答案 1 :(得分:2)

试试这个: -

$(this).find('i').off('click').on('click',function(){
    console.log(that.attr("value"));
    console.log("jeah");
 $( "#ZF_dialog" ).dialog({
    draggable: true,
    show: { effect: "blind", duration: 250},
    height: 320,
    width: 500,
    position: { my: 'top', at: 'top+250' }
});
let temp = $("<tr><td id='USER"+key+"' value='"+GlobalVarUS[key]["pk_pr_id"]+"'>"+GlobalVarUS[key]["pk_pr_id"]+"</td><td id='USERa"+key+"' value='"+GlobalVarUS[key]["pk_pr_id"]+"'>"+GlobalVarUS[key]["projektname"]+"</td><td id='USERb"+key+"' value='"+GlobalVarUS[key]["pk_pr_id"]+"'>"+GlobalVarUS[key]["aktiv"]+"</td><td id='USERc"+key+"' value='"+GlobalVarUS[key]["pk_pr_id"]+"'>"+GlobalVarUS[key]["verrechenbar"]+"</td><td id='ZFDialog"+key+"' value='"+GlobalVarUS[key]["pk_pr_id"]+"'><i class='fa fa-list' aria-hidden='true' style= 'cursor:pointer'></i></td></tr>");
temp.appendTo("#table_zf");

});

感谢: - )