我有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'
如何获得上述结果?
答案 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'
但我强烈坚持将这种糟糕的图式重写为多对多的关系。