2013-07-31 86 views
0

基本上我有兩個表:節點和性質。節點有一個自動遞增的ID,自然有一個'節點'列,這是我在這裏重點。節點列包含從節點表ID的分隔字符串PHP MySQL內部連接問題

在本質上表中的節點列的一個例子可能是這樣的(即自然條目中的節點。):

.1.10.597.598.599.600. 

有是每個id前後的句號,所以我可以搜索節點中的所有圖像(例如,WHERE節點LIKE'%。「。$ _ GET ['id']。」。%')。

這就是說,我試圖從節點表中選擇自然表中的條目的所有條目。這是迄今爲止我所得到的,但它返回一個空集。

SELECT * 
FROM nodes A 
INNER JOIN nature B 
ON A.id LIKE '%.B.node.%' 

任何幫助將不勝感激。

回答

0

嘗試:

​​3210

注意,這是相當昂貴的,因爲它可以防止任何使用索引。

請參閱fiddle

+0

這完全不是那麼回事。請注意,當您搜索%.B.node。%時,這些時間段非常重要,因爲節點列由句點分隔。所以當我搜索597的節點ID時,它需要是%.B.node。%,因爲597被包裹在句點中。請參閱我提出的節點列示例。那有意義嗎? – croar

+0

是的,我剛剛注意到並添加了句點。對不起 –

+0

仍然有趣的是,它返回409,248個結果,其中只有882個節點和464個自然條目。阿哈,它在做什麼是爲每個點頭條目選擇所有的自然條目(882 * 464 = 409,248) – croar

0

使用CONCAT功能

ON A.id LIKE CONCAT('%.',B.node,'.%') 
+0

仍然返回一個空集。另外就像我在其他評論中說的那樣,這些時段需要包裹節點ID,因爲它們是分隔符。 – croar

+0

我可以更新它,但如果它返回空集,您可能還想確保數據存在。 – aynber

+0

數據存在。有大多數都是自然條目的節點。 – croar