2016-05-12 74 views
-1

我提出两个选择语句与不同的结果集, 请帮我做这两个SELECT语句显示其结果在一个表中,SQL Server中,如何创建一个表中的两个select语句

DECLARE @EmpID INT 

SELECT @EmpID = SubCategoryId 
FROM dbo.Product 
WHERE ProductId = 13 

SELECT Product.ProductId 
    , Product.ProductName 
    , Product.ProductPrice 
    , Product.ProductQuantity 
    , Product.SubCategoryId AS ForUpdate 
    , SubCategory.SubCategoryName 
    , SubCategory.SubCategoryId 
FROM Product 
INNER JOIN ProductUnderCategory 
    ON ProductUnderCategory.ProductId = Product.ProductId 
INNER JOIN SubCategory 
    ON ProductUnderCategory.SubCategoryId = SubCategory.SubCategoryId 
WHERE Product.ProductId = 13 

SELECT Property.Propertyid 
    , Property.PropertyName 
    , ProductProperties.PropertyValue 
FROM Property 
LEFT JOIN ProductProperties 
    ON Property.PropertyId = ProductProperties.PropertyId AND ProductProperties.ProductId = 13 
WHERE Property.Propertyid IN (
     SELECT PropertyId 
     FROM CategoryProperty 
     WHERE CategoryProperty.SubCategoryId = CategoryProperty.SubCategoryId AND CategoryProperty.SubCategoryId = @EmpID 
     ) 
+2

您是使用mySQL还是MS SQL Server?你有两个标签。 – Morpheus

+0

你想合并来自两个结果集的所有行吗?如果是这样,列将需要“排队”,并且没有相同数量的列被返回。 – Morpheus

+0

如果这是SQL Server(我不知道关于mysql),那么你将需要一个联盟,但作为Morpheus说这两个查询的列需要匹配。 – OldBoyCoder

回答

0

我假设你想要每个产品的属性(不是联合,而是联接)。类似这样的:

DECLARE @EmpID INT 

SELECT @EmpID = SubCategoryId 
FROM dbo.Product 
WHERE ProductId = 13 

SELECT Product.ProductId 
    , Product.ProductName 
    , Product.ProductPrice 
    , Product.ProductQuantity 
    , Product.SubCategoryId AS ForUpdate 
    , SubCategory.SubCategoryName 
    , SubCategory.SubCategoryId 
    , Property.Propertyid 
    , Property.PropertyName 
    , ProductProperties.PropertyValue 
FROM Product 
INNER JOIN ProductUnderCategory 
    ON ProductUnderCategory.ProductId = Product.ProductId 
INNER JOIN SubCategory 
    ON ProductUnderCategory.SubCategoryId = SubCategory.SubCategoryId 
LEFT JOIN ProductProperties 
    on ProductProperties.ProductID = Product.ProductID 
left join Property 
    ON Property.PropertyId = ProductProperties.PropertyId 
    and Property.Propertyid IN (
     SELECT PropertyId 
      FROM CategoryProperty 
      WHERE 
       CategoryProperty.SubCategoryId = CategoryProperty.SubCategoryId 
       AND CategoryProperty.SubCategoryId = @EmpID 
      ) 
WHERE Product.ProductId = 13 
+0

它的工作,非常感谢Chris Steele,上帝保佑你! – Lucy

0

您可能可以执行以下操作 - 如果第一个选择中不存在列,则需要包含任何适合的值,并且必须命名该列。如果后续选择中不存在列,则只需返回null /''/ 0或任何您需要的值作为值;

select Product.ProductId, Product.ProductName, Product.ProductPrice, Product.ProductQuantity, '' as someColumn, .... 
from .... 
union [all] 
Select Property.Propertyid, Property.PropertyName, ProductProperties.PropertyValue, NULL (for ProductQuantity), ProductProperties.someColumn 
from ..... 
相关问题