2016-08-09 209 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,如果可能請標記爲選擇答案。 –