2012-11-25 91 views
1

我在計算查詢時遇到了一些麻煩。我有兩個表,COMPANY,它包含一個公司id列,comp_id和一個名稱列。第二個表格SOURCE有一個comp_id列和一個公司銷售零件的列。MySQL初學者查詢

如何編寫查詢來查找生產所有零件的公司的名稱?我認爲這使用不存在的陳述,但我不知道如何。

謝謝。

回答

0

是非常簡單的命令,假設一個部分是 「875」

SELECT name FROM company WHERE comp_id IN(SELECT comp_id FROM parts 
WHERE parts = 875) 

這讓你在不同公司的相同部分

+0

我無法查詢特定部分,我需要出售所有零件的公司。 – user1851970

1
Select name 
from company, source 
where company.comp_id=source.comp_id; 
+0

謝謝,但這不是我正在尋找的。通過此查詢,我收到了不生產所有產品的公司的名稱。我想要特定的公司生產每件產品。 – user1851970

+0

我想,源只有生產零件的公司,否則你應該更詳細地描述你的表格 – doniyor

1

嘗試......

SELECT c.name from company join source s on (s.comp_id = c.comp_id) where parts = [:part_id]; 
+0

這也不完全回答我的問題。我需要特定的公司來生產每一個零件。 SOURCE表只包含一個comp_id和一個零件,並且在銷售多個零件的公司或由多個公司銷售的零件的兩欄中可能有重複。 '從SOURCE'中選擇不同的部分將給出部件列表。 – user1851970

0

從公司選擇名稱,來源where.com.comp_id = source.comp_id;

1
SELECT name, count(*) AS parts_count 
FROM company, source 
WHERE company.comp_id = source.comp_id 
GROUP BY name 
HAVING parts_count = (select count(*) from source)