我有三个表格图像和参数,如下所示。我在构建查询时遇到问题。确切的结果不会显示在一个查询中。我想从主表中获取信息。
在表格中,客户I填写来自常规和主要和常规的数据在主表下。我想联合下面的查询
查询1
SELECT Customer.CustomerId,
Customer.RefId,
Regular.LicenseId,
Regular.ControlId,
Master.MasterId,
Master.FullName,
Master.profile
FROM Customer
INNER JOIN Regular
ON Customer.RefId = Regular.LicenseId
INNER JOIN Master
ON Regular.ControlId = Master.MasterId
查询2
SELECT Customer.CustomerId,
Customer.RefId,
Master.FullName,
Master.profile
FROM Customer
INNER JOIN Master
ON Customer.RefId = Master.MasterId
结果
如何在一个查询中获得两个结果。我厌倦了使用不同的不同陈述。我可以为此获得解决方案......
答案 0 :(得分:0)
UNION
应包含相同数量的列
SELECT Customer.CustomerId,
Customer.RefId,
Regular.LicenseId,
Regular.ControlId,
Master.MasterId,
Master.FullName,
Master.profile
FROM Customer
INNER JOIN Regular
ON Customer.RefId = Regular.LicenseId
INNER JOIN Master
ON Regular.ControlId = Master.MasterId
UNION ALL
SELECT Customer.CustomerId,
Customer.RefId,
'' LicenseId,
'' ControlId,
'' MasterId,
Master.FullName,
Master.profile
FROM Customer
INNER JOIN Master
ON Customer.RefId = Master.MasterId
<强>更新强>
声明一个参数以传递查询字符串(r%或m%)
-- DemoProc 'R'
CREATE PROCEDURE Demoproc @param VARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
IF( @param LIKE 'R%' )
BEGIN
SELECT Customer.CustomerId,
Customer.RefId,
Regular.LicenseId,
Regular.ControlId,
Master.MasterId,
Master.FullName,
Master.profile
FROM Customer
INNER JOIN Regular
ON Customer.RefId = Regular.LicenseId
INNER JOIN Master
ON Regular.ControlId = Master.MasterId
END
ELSE IF( @param LIKE 'M%' )
BEGIN
SELECT Customer.CustomerId,
Customer.RefId,
'' LicenseId,
'' ControlId,
'' MasterId,
Master.FullName,
Master.profile
FROM Customer
INNER JOIN Master
ON Customer.RefId = Master.MasterId
END
END
GO