c# SELECT语句,SQL查询

本文关键字:SQL 查询 语句 SELECT | 更新日期: 2023-09-27 18:01:29

我试图从Products表中获取所有产品,同时从Company表中检索Company_Name。在我的两个表中有一个共同的列是Company_Id

我正在使用这个查询:

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   

然而,这只显示了来自特定公司的所有产品。

我需要展示所有的产品。

c# SELECT语句,SQL查询

这里似乎有一个可选的关系,所以使用LEFT JOIN:

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

检索所有产品,无论是否链接到一个有效的公司。

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

您可以使用LEFT JOIN从Products表中获取所有详细信息。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

左连接是最好的解决方案。

或者你可以让一个用户定义函数,从那里你可以检索公司名称,像下面

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

试试这个

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 

这将返回给您所有的产品,如果有关联的公司,NULL将显示在Company.Company_Name下面,否则