2014-01-21 39 views
0

我有3個表格,但現在我只擔心其中2個。我想選擇兩個表中的所有條目。我相信這是JOIN聲明的目的。我的表格是「公司」和「個人信息」。公司是以CompanyName爲主鍵的個人表,個人信息表的外鍵索引爲Company_id。聲明是什麼將這兩者作爲一個單一的查詢加入?使用JOIN選擇多個表格

+0

您當前的查詢是什麼?在尋求幫助之前至少嘗試一些東西通常是有益的。 – enderland

+1

$ stmt3 = $ DB-> prepare('SELECT * FROM companies LEFT JOIN personalInfo USING(CompanyName)'); – Yamaha32088

回答

2

我不是100%肯定你的方案,但是這是你在找什麼的最簡單形式:

SELECT * 
FROM Companies C 
INNER JOIN PersonalInfo PI ON C.Company_id = PI.Company_id 

內部連接的性質將排除沒有任何相關PersonalInfo行的公司中的行。如果你想獲得的所有公司,無論那麼你會使用LEFT OUTER JOIN:

SELECT * 
FROM Companies C 
LEFT OUTER JOIN PersonalInfo PI ON C.Company_id = PI.Company_id 

當您選擇*在加入它將從兩個表返回所有行。您可以選擇要顯示的列,方法是在選擇中指定它們:

SELECT C.CompanyName, PI.ColName1, PI.ColName2 
FROM Companies C 
LEFT OUTER JOIN PersonalInfo PI ON C.Company_id = PI.Company_id 
+0

這個工作,但它顯示公司名稱兩次是否有辦法擺脫公司名稱? – Yamaha32088

+0

我更新了我的答案,希望這能讓你更接近你的期望。 – sean

+0

是的,你的男人 – Yamaha32088

2

如果我明白你的問題,這是你可能需要的東西:

$stmt3 = $DB->prepare('select c.field1,c.fieldn,p.fielda,p.fieldx from companies c inner join personal_info p on c.id=p.companies_id');