2011-02-09 30 views
4

我有這兩個表:MySQL加入使用「包含」?

Table: ORDERS 
ID - NAME - DATA 
--------------------------------------------- 
1 - Order 1 - node_checkout_nid";i:141;s:10: 
2 - Order 2 - node_checkout_nid";i:142;s:10: 

Table: NODES 
NID - Description 
-------------------- 
141 - bla bla bla 
142 - bla bla bla 2 

我需要一個SQL連接查詢,可以加入對NID兩個表,牢記NID是在「數據」一欄。

我需要這個來結束:

Table: RESULT 
ID - NAME - DATA        NID - Description 
----------------------------------------------------------------------------------- 
1 - Order 1 - node_checkout_nid";i:141;s:10: - 141 - bla bla bla 
2 - Order 2 - node_checkout_nid";i:142;s:10: - 142 - bla bla bla 2 

我想用一個「喜歡」加盟,但我認爲(如果可能的話),一個「包含」加入會更好?任何幫助將不勝感激!

+1

停止在一列中存儲多個序列化值! – 2011-02-09 09:07:38

回答

5

您可以使用:

SELECT ID, NAME, DATA, NID, Description 
    FROM ORDERS INNER JOIN NODES ON DATA LIKE CONCAT('%;i:', NID, ';%') 

反正它是一個沉重的查詢。將數據字段中的NID作爲純文本並不是一個好主意,在不同的列中更好。

+0

不起作用。 :( – coderama 2011-02-09 09:15:34

+0

我回來了,它的工作,如果我改變第一LIKE爲ON – coderama 2011-02-09 09:25:02

2

您的數據是非規範化的。您正在將一些序列化對象存儲在DATA列中,並試圖在此基礎上執行關係操作。雖然可以這樣做,但要注意它會很慢並且可能不可靠。只需將您的NID存儲在單獨的列中。