2012-07-01 76 views
0

我有2個表格,門票和狀態。門票有相當於state.id簡單的MySQL加入替換外鍵

SELECT tickets.id AS 'Ticket Id', 
     state.description AS 'State' 
FROM tickets 
LEFT JOIN state ON tickets.state = state.id 
WHERE tickets.id = 1; 

所以,如果我有票行與外國國家重點tickets.id = 1和tickets.state = 1,我有一排與state.id狀態= 1 and state.description ='打開'

我該如何得到結果Ticket Id = 1,State = Open?

編輯:這並不工作,由於某些原因,狀態表是空的......

+0

「*簡單MySQL加入**替換外鍵***」? – Lion

+0

'AND state.description ='open''?順便說一句,我不認爲你需要引用'AS'狀態',但我不確定這是否是一個問題//最好的做法。 – Nanne

+0

此查詢不完全給你你要的東西嗎?不能確定沒有看到示例數據,但可能不需要'LEFT JOIN',而'INNER JOIN'就足夠了。 –

回答

1

這似乎是

SELECT tickets.id AS 'Ticket Id', 
     state.description AS 'State' 
FROM tickets 
LEFT JOIN state ON tickets.state = state.id 
WHERE tickets.id = 1 and state.state = 'open'; 
+0

我不想檢查狀態是否打開,這是整個點。 .. tickets.state是狀態表的外鍵,我需要具有狀態描述的票證ID,但是到目前爲止狀態始終爲空 – Theveloper

1

對我來說,這看起來是你會從查詢中得到你想要的已經寫了......?

如果你想從你的數據庫中得到確切的結果「Ticked Id = 1,State = Open」,請查看concat()函數。如果您想將狀態直接放入您的故障單表中,我需要先添加一個新列,然後使用更新查詢更新,然後刪除舊的tickets.state列。或者,也許你真正需要的是使用上述查詢定義的視圖。

創建視圖ticketstate as select ticket.id ...

+0

狀態在運行該查詢時顯示爲空。 – Theveloper