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
然而,这只显示了来自特定公司的所有产品。
我需要展示所有的产品。
这里似乎有一个可选的关系,所以使用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
下面,否则