2011-09-03 153 views
0

可能重复:
Searching a column containing CSV data in a MySQL table for existence of input values
MySQL query finding values in a comma separated string从逗号选择值分隔字符串

我有两个表。一个表格包含标签,另一个表格包含以逗号分隔的字符串包含标签的帖子。我需要使用特定的标记ID来获取所有帖子。

我试过,但没有奏效:

SELECT 
ab_tags.id, 
ab_tags.lang, 
ab_tags.tag, 
ab_tags.slug, 
ab_etkinlik.title, 
ab_etkinlik.tag 
FROM 
ab_tags , 
ab_etkinlik 
WHERE 
ab_tags.id = 2 
ab_tags.id IN (ab_etkinlik.tag) 

ab_tags.id从$_get val
ab_etkinlik.tag未来是像 “2,4,8,20,48”

字符串

在此先感谢。

+4

不要在关系数据库中存储逗号分隔值。 –

+0

它以什么方式不起作用?请描述观察到的行为,包括您得到的任何错误消息。此外,您正在使用哪种RDBMS? MySQL是PHP的常用选择,但它可以帮助我们确定地知道。 – APC

回答

1

试试这个:

SELECT ab_tags.id, 
     ab_tags.lang, 
     ab_tags.tag, 
     ab_tags.slug, 
     ab_etkinlik.title, 
     ab_etkinlik.tag 
FROM ab_etkinlik 
    JOIN ab_tags ON ab_tags.tag IN(ab_etkinlik.tag) 
WHERE ab_tags.id = 2 
2

如果你设计的这个模式你自己,你错过了一个链接表的概念。如果您有名为“标签”和“事件”(etkinlik)的表格,则应该为每个事件设置一个包含零到多行的双列“事件标签”链接表。第一列是事件ID,第二列标签ID。