2013-03-19 205 views
3

我有一個MySQL數據庫至極這個樣子的2個表:加入與SQL查詢的WHERE子句

Klant:

ID Naam   Email Soort Status 
6 test   test  test2 
7 status test test  test 20 
8 soort test  test  test  
9 soort test 2 test2 Museum 

郵件:

ID Content     Datum  Titel 
1 (lots of encoded HTML) 18-03-13 test 
2 (lots of encoded HTML) 18-03-13 test2 
4 (lots of encoded HTML) 18-03-13 alles weer testen 

(是的,我仍然測試很多^^)

現在我有一個SQL查詢,選擇所有從'Klant'的where子句,從前一個p獲取ID年齡:

$strSQL = "SELECT * FROM Klant WHERE ID = '".$_GET["ID"]."' "; 

我想要的是加入這個查詢用下面的查詢:

SELECT ID, Titel FROM Mail; 

編輯:

從所有的答案和意見,我想我開始覺得我的問題也許是完全錯誤的..我會解釋我需要它的地方,我可能甚至不需要加入?我現在有一個表至極包括來自「Klant」它看起來像這樣的數據:

enter image description here

的意思是,我想補充另一個表,其中包括所有的ID和標題的從「郵件」。對於我可能與你造成的困惑,我感到抱歉,因爲我對我的問題並不清楚。我希望這可能會清理我想要的,你們也許可以告訴我,我是否需要加入或者可以採取其他措施?

我仍然是一名學生,這是我第一次使用JOIN,我無法弄清楚這一點。如果任何人都可以告訴我如何做到這一點,或者讓我朝着正確的方向發展,那將會很棒!

+2

應使用哪些列執行'JOIN'?我在你的計劃中看不到任何東西。 – MarcinJuraszek 2013-03-19 10:19:25

+2

好吧,要加入他們需要具有「共同信息」的表格。這意味着,一個表擁有一個可以在另一個表中作爲外鍵找到的鍵(主鍵)。這是你的表結構(這些ID鏈接在一起)的情況? – Najzero 2013-03-19 10:20:00

+0

這兩個表格之間的關係密鑰在哪裏? – 2013-03-19 10:21:08

回答

0

這是很難看到一個JOIN適用於在本例你的問題。

A JOIN讓我們根據關係從多個表中提取信息。據我所知,你的表沒有任何方法將一行與另一行中的行連接起來,除非SteveP是正確的,並且你的ID提供了這種關係。

例如,如果你的klant表有一個mail_id列,那麼你可以做

SELECT * 
FROM klant 
JOIN mail ON klant.mail_id = mail.id 

,這將返回一個排爲兩個表中所有匹配的行對。或者,您可以使用LEFT OUTER JOIN從JOIN左側的表中拉出所有行,並可選擇右側匹配行中的數據。

如果沒有加入表的任何內容,則可以使用CROSS JOIN,它將使table1中的每行與table2中的每行都返回一個完整的笛卡爾。

一些人經常與JOIN混淆的是UNION,它允許您編寫2條SELECT語句並返回兩個組合/連接在一起的結果集,但這些應該在每個查詢中返回相同的列(例如,選擇NULL如果查詢不爲該列提取數據,則在查詢中的列的列)

3
SELECT * FROM Klant t1 
JOIN 
SELECT ID, Titel FROM Mail t2 
ON t1.ID = t2.ID 
WHERE t1.Name = 'test' 

要具有所期望的結果執行以下操作:

SELECT * FROM Klant t1 
JOIN 
SELECT ID, Titel FROM Mail t2 
ON t1.ID = t2.ID 

如果你想有一個特定的行比剛纔添加的where子句:

WHERE t1.ID = 6 

WHERE t1.Naam = 'test' 

0

我猜你想加入在表格之間通用的ID字段。

select * from Klant, Mail where Klant.ID = '".$_GET["ID"]."' and Klant.ID = Mail.ID 

你也可以做

select * from Klant 
    join Mail on Mail.ID = Klant.ID 
    where Klant.ID = '".$_GET["ID"]."' 
0

爲此,您可以直接通過下面的查詢:

select k.ID,k.Naam, k.Email,k.Soort,k.Status, m.ID,m.Titel from Klant k, Mail m where k.ID = m.ID and k.ID = '".$_GET["ID"]."'