我试图在一次调用中获得2组查询,但我似乎无法正确理解。
我打电话的数据是:
每个表的查询是:
SELECT
*
FROM
tT
WHERE
active = 1
AND ADate BETWEEN '01/03/2011' AND '09/01/2012'
AND (RID = 0...etc etc....
AND
SELECT
*
FROM
tE
WHERE
active = 1
AND (RID = 0...etc etc...
我尽力将它们结合起来:
SELECT *
FROM
(SELECT *
FROM tT
WHERE active = 1
AND ADate BETWEEN '01/03/2011' AND '09/01/2012'
AND (RID = 0...etc etc..
JOIN
(SELECT *
FROM tE
WHERE active = 1
AND (RID = 0...etc etc... ) ON tT.RID = tE.RId
但是当它应该是(22)的两倍时,它只返回11行。
如何将两者结合起来并获得完整的22行?
答案 0 :(得分:0)
如果您只想结合两个查询的结果,只需在两个查询上执行联合。
SELECT * FROM tT WHERE active = 1 AND ADate BETWEEN '01/03/2011' AND '09/01/2012' AND (RID = 0...etc etc..
UNION ALL
SELECT * FROM tE WHERE active = 1 AND (RID = 0...etc etc...
如果您不想包含重复记录,请从union语句中删除“ALL”,并且只返回唯一记录。
答案 1 :(得分:0)
如果您只想组合2个表中的数据而不是使用union。
SELECT *
FROM tT
WHERE active = 1
AND ADate BETWEEN '01/03/2011' AND '09/01/2012'
AND (RID = 0...etc etc..
UNION ALL
SELECT *
FROM tE
WHERE active = 1
AND (RID = 0...etc etc...
但是,只有当两个表具有完全相同的字段且完全相同的类型时,这才有效。
如果情况并非如此,请选择*但是您应该命名,如果需要,请转换您的字段... 例如:(不知道你的字段,我只是采用了一些随机名称)
SELECT tT.ID, tT.Field1, tT.TypeID
FROM tT
WHERE active = 1
AND ADate BETWEEN '01/03/2011' AND '09/01/2012'
AND (RID = 0...etc etc..
UNION ALL
SELECT tE.KeyID as ID, tE.Field2 as Field1, convert(int, tE.TypeCode) as TypeID
FROM tE
WHERE active = 1
AND (RID = 0...etc etc...
修改强>
如果两个表都不匹配,则必须更具创意。
例如:
tT具有字段ID int,Field1 int,Field2 varchar(10)和Field3 int
tE具有字段ID int,field4 int,field5 varchar(10)和Field6 datetime
内容将是例如:
tT
ID Field1 Field2 Field3
-- ------ ------ ------
1 30 test 40
tE
ID Field4 Field5 Field6
-- ------ ------ ------
2 50 hello 30/04/2017
结果应该是
ID Field1 Field2 Field3 Field6
-- ------ ------ ------ ------
1 30 test 40
2 50 hello 30/04/2017
查询不是
SELECT tT.ID, tT.Field1, tT.Field2, tT.Field3, null as Field6
FROM tT
WHERE active = 1
AND ADate BETWEEN '01/03/2011' AND '09/01/2012'
AND (RID = 0...etc etc..
UNION ALL
SELECT tE.KeyID as ID, tE.Field4 as Field1, tE.Field5 as Field2, null as Field3, tE.Field6
FROM tE
WHERE active = 1
AND (RID = 0...etc etc...
如果您愿意分享您的桌面设计,我可以进行更符合您需求的查询......
答案 2 :(得分:0)
希望这是你想要做的事情
CREATE TABLE #Test(
RowID INT IDENTITY(1,1),
Texts VARCHAR(50)
)
GO
CREATE TABLE #Test1(
RowID INT IDENTITY(1,1),
Numb INT
)
GO
INSERT INTO #Test VALUES ('Test')
INSERT INTO #Test VALUES ('Best')
GO
INSERT INTO #Test1 VALUES (34)
INSERT INTO #Test1 VALUES (35)
GO
SELECT * FROM
(SELECT * FROM #Test )T
JOIN
(SELECT * FROM #Test1)T1
ON T.RowID = T1.RowID
答案 3 :(得分:0)
如果我在查询后正确理解问题应该有效 假设你有 col1& 表格tT 中的col3 ,而 col1& table tE 中的col2 然后你应该使用null,就像不存在的列一样
$(function() {
$('p').click(function(){
$(this).next('p').show();
});
});
如果不需要别的东西,请告诉我。