2013-04-03 34 views
3

這是我第一次使用mysql,我需要一些幫助。我無法找到任何解決方案,可能是因爲它太簡單了,或者我太小白,無法正確查找它。查詢多個表,包括空外鍵的行MySQL

我想從我的測試數據庫中的多個表進行查詢。比方說,表是:

類別(* id_category,* id_product)

產品(* id_product,id_category,id_supplier,id_manufacturer)

製造商(* id_manufacturer,名)

供應商(* id_supplier,name)

具有*的整數主鍵不爲null,且具有auto_increment(從1開始)。其他id列只是整數外鍵(默認爲空)。

我需要一個查詢,其中還包括在產品表上包含空id_manufacturer和/或id_supplier的行。在產品表返回值「0」,那些空的字段,以便當我進行像具有空值(0)的行的

SELECT category.id_product, manufacturer.name, supplier.name 
FROM category, product, manufacturer, supplier 
WHERE category.id_category = product.id_category AND manufacturer.id_manufacturer = product.id_manufacturer AND supplier.id_supplier = product.id_supplier; 

無查詢被示出。 我希望您能夠以最簡潔高效的方式指向我,而無需更改表格屬性。任何幫助將非常感激。

回答

5

然後您需要使用左連接。

SELECT category.id_product, manufacturer.name, supplier.name, P.ID_PRODUCT 
FROM product 
LEFT JOIN category C 
ON C.id_category = P.id_category 
LEFT JOIN manufacturer M 
ON M.id_manufacturer = P.id_manufacturer 
LEFT JOIN supplier S 
ON S.id_supplier = P.id_supplier; 

即使它們沒有來自其他表的相應行,它們也會給出產品表的所有行。

+0

就是這樣。非常感謝你。一次一步爲我:) – Guillem