2008-12-04 93 views
3

我有兩個表有以下欄目:MySQL的加入問題

表1:

id, agent_name, ticket_id, category, date_logged 

表2:

id, agent_name, department, admin_status 

我試圖做到的,是從選擇的所有行table1代理部門等於table2的部門。

我已經嘗試了幾個不同的連接語句,但我要麼得到的語法錯誤或它只是不會與此表設置工作。當談到MySQL時,我是一名初學者,而且從我讀過的JOIN的角度來看,這是複雜的一端!

我考慮過的另外一個選擇是將「department」列複製到table1中,但是這需要在前端編寫更多的代碼,並且試圖在沒有這樣的情況下實現所需的結果。

非常感謝任何幫助。

+0

+1重置爲0;我不明白爲什麼有人低估了這一點? – 2008-12-04 11:19:17

+0

感謝Stein Gauslaa Strindhaug提供了非常有用的鏈接,提升了我的問題並提供了我一直在尋找的解決方案。如果我最初的問題不完美,我很抱歉! – suitedupgeek 2008-12-04 11:24:05

回答

4

我不太明白你的問題...... 只有table2有一個部門,他們唯一共同的是agent_name。

我懷疑你真正的意思是:你希望Table1中代理來自某個部門的所有行,是你想要的嗎?在這種情況下,這樣的事情應該這樣做(沒有測試它雖然):

SELECT * FROM Table1 
     INNER JOIN Table2 
     ON Table1.agent_name = Table2.agent_name 
     WHERE Table2.department = 'somespecific value'; 

BTW:(由什麼別人說的啓發)agent_name聽起來就像是一個字符串值,你真的應該考慮使用將table2中的id作爲table1中的一個鍵(我們可以稱它爲agent_id)將它們鏈接在一起。外鍵(表格之間的鏈接)應該是一個真正唯一的ID。該部門應該可能也是一個身份證密鑰。那麼它將是:

SELECT * FROM Table1 
     INNER JOIN Table2 
     ON Table1.agent_id = Table2.id 
     WHERE Table2.department = 'somespecific value'; 
0

雖然我不完全理解,你需要什麼以及如何相關表格,我會嘗試類似的:

select 
    a.id, a.agent_name, a.ticket_id, 
    a.category, a.date_logged, b.department 
from 
    table1 a inner join table2 b on b.agent_name=a.agent_name 

目前我假設您需要鏈接agent_name上的表。

BTW,連接是SQL頻譜:)

0

您migth要添加的兩個表,而不是在這兩個使用代理名稱中的一種獨特關係鍵的簡單結束。事情是這樣的:

Table1: id, agent_id, ticket_id, category, date_logged 
Table2: agent_id, agent_name, department, admin_status 

一個SQL例子:

SELECT t2.agent_name, t1.date_logged FROM table1 t1 
INNER JOIN table2 t2 ON t2.agent_id = t1.agent_id 

然而,你可能想使用某種形式的外連接,所以我建議你看看在互聯網上的一些文章。