2016-08-09 210 views
4

我试图从Products表中获取所有产品,并同时从Company表中检索Company_Name表。我的表中的一个共同列是Company_IdC#SELECT语句,SQL查询

我使用此查询:

SELECT 
    products.product_id, 
    products.product_name, 
    products.product_desc, 
    products.unit_price, 
    products.stock_level, 
    products.product_image, 
    products.gender, 
    products.type_of_acct, 
    products.product_cname, 
    products.product_cdesc, 
    products.company_id, 
    company.company_name 
FROM 
    products 
INNER JOIN 
    company ON products.company_id = company.company_id 

但是,这只能说明全部由特定公司的产品。

我需要显示所有的产品。

+0

使用左连接,而不是内部联接 –

+2

您的查询是正确的。确认您的表格中有多个产品 – Tarik

+3

您的查询看起来是正确的。也许你只有一家公司?如果有没有公司的产品,那么左连接将解决问题。 – Doruk

回答

3

看来你有一个可选的关系,在这里,所以使用LEFT JOIN

.... 
FROM Products 
LEFT JOIN Company 
ON Products.Company_Id = Company.Company_Id 

这检索是否与有效的公司或不是所有产品。

我认为你还需要检查你的数据并检查你的外键是否设置正确并且有正确的数据。

+0

嗨,感谢!!这个方法解决了我的问题! – Bella

0

试试这个

SELECT 
    Products.Product_ID, Products.Product_Name, Products.Product_Desc, 
    Products.Unit_Price, Products.Stock_Level, Products.Product_Image,  
    Products.Gender, Products.Type_Of_Acct, Products.Product_CName, 
    Products.Product_CDesc, Products.Company_Id, Company.Company_Name 
FROM 
    Products 
LEFT JOIN 
    Company ON Products.Company_Id = Company.Company_Id 

这将返回所有的产品,其链接的公司如果有一个NULLCompany.Company_Name下显示,否则

+0

嗨,谢谢!!这个方法解决了我的问题! – Bella

2

您可以使用LEFT JOIN摆脱产品的所有细节表。 LEFT JOIN从左表获取所有记录,并从右表中获取匹配记录。

SELECT Products.Product_ID, Products.Product_Name, Products.Product_Desc, Products.Unit_Price, Products.Stock_Level, Products.Product_Image, Products.Gender, Products.Type_Of_Acct, Products.Product_CName, Products.Product_CDesc, Products.Company_Id, Company.Company_Name 
FROM Products 
LEFT JOIN Company ON Products.Company_Id = Company.Company_Id 
+0

嗨,感谢!!这个方法解决了我的问题! – Bella

+0

最欢迎亲爱的 – Developer

0

左连接是您的最佳解决方案。

也可以使一个用户定义函数,并从那里你可以获取公司名称像下面

SELECT 
    Products.Product_ID, Products.Product_Name, 
    Products.Product_Desc, Products.Unit_Price, 
    Products.Stock_Level, Products.Product_Image,  
    Products.Gender, Products.Type_Of_Acct, 
    Products.Product_CName, Products.Product_CDesc, 
    Products.Company_Id, 
    dbo.GetCompanyNameFromCompanyID(Products.Company_Id) AS Company_Name  
FROM 
    Products 
+0

嗨,感谢您的解答! – Bella

+0

@Bella WC,如果可能请标记为选择答案。 –