不寻常的加入形式

时间:2011-03-25 06:54:00

标签: mysql

我有2张桌子

Table 1 Name: filestable

Table 1 Fields:
        id          int
        name        varchar
        deleted     enum('y','n')


Table 2 Name: productstable

Table 2 Fields:
        id          int
        name        varchar
        fileids     text
        deleted     enum('y','n')

对于每个产品,fileids存储为“1”或“1,2” 即,如果单个文件与产品相关联,则只显示单个文件ID(为'1'),但如果关联多个文件,则文件ID用','分隔(如'1,2')

如何获得如下输出:

fileid            filename              associated products (i.e. total product associated with the file)

此外,文件和产品都不应该被删除,即删除='n'

如何获得上述结果?

1 个答案:

答案 0 :(得分:1)

    SELECT f.id fileid,
           f.name filename, 
           p.id productid,
           p.name productname
      FROM productstable p
INNER JOIN filestable f ON FIND_IN_SET(f.id, p.fileids)
       AND f.deleted = 'n'
     WHERE p.deleted = 'n'

但我强烈坚持将这种糟糕的图式重写为多对多的关系。