2016-06-10 64 views
0

我試圖得到一個結果,其中一列ID就像是一個逗號分隔欄,我的兩個表如下:使用單個id列查詢逗號分隔的列?

地點表

enter image description here

事件表

enter image description here

用戶表

enter image description here

我的查詢是

$sql=" SELECT users.*, events.*, room_location.* 
     FROM events 
      INNER JOIN room_location ON events.event_room = room_location.location 
      INNER JOIN users ON room_location.user_loc_id = users.userlocationaccess 
     WHERE room_location.user_loc_id LIKE '%1,2%'"; 

$result = $conn->query($sql); 

,如果我在用戶 - > userGroupLocID使用單標識在上面的查詢工作。

如何修改我的查詢工作,以便查找ID是否像我的逗號分隔的列?

+1

_Smells像原始數據庫design_做如果它不是太晚,更改數據庫設計一個嚴重的錯誤。這一個只會給你帶來問題。在表格列中用逗號分隔的列表存儲信息從來沒有好的理由 – RiggsFolly

+0

是的,我希望我可以重建數據庫,這是客戶端如何設置數據庫,我必須處理它,因爲它們是存儲了一千條記錄。 – Craig

+1

@克雷格:你可以建議客戶改變它。 –

回答

2

您可以使用FIND_IN_SET(str,strlist)函數搜索CSV字段。

mysql> SELECT FIND_IN_SET('b','a,b,c,d'); 
    -> 2 

文檔說

如果字符串str是在由N的 字符串列表strlist返回的1到N的範圍內的值子。字符串列表是一個 字符串,由以「,」字符分隔的子字符串組成。

您可以通過用戶的位置ID列中找到userGroupLocID

select find_in_set(location_id_in_search, replace(userGroupLocID, ' ', '')) 
    from table_name;