我要一张有这些值的桌子
表:文档
id | document
----|-------------
1 | doc.txt , doc1.txt , doc2.rtf , doc3.docx , doc4.doc
2 | doc.txt
3 | doc.txt , doc1.txt
4 | doc.txt , doc1.txt , doc2.rtf
5 | doc.txt , doc1.txt , doc2.rtf , doc3.docx , doc4.doc
6 | doc.txt , doc1.txt , doc2.rtf , doc3.docx
7 | doc.txt , doc1.txt , doc2.rtf , doc3.docx , doc4.doc
8 | doc.txt , doc1.txt , doc2.rtf
9 | doc.txt , doc1.txt , doc2.rtf , doc3.docx , doc4.doc
10 | doc.txt , doc1.txt
SQL FIDDLE SCHEMA
我需要这样的结果。其中id=5
Counter | docs
----|-----------
1 | doc.txt
2 | doc1.txt
3 | doc2.rtf
4 | doc3.docx
5 | doc4.doc
其中id=4
Counter | docs
----|-----------
1 | doc.txt
2 | doc1.txt
3 | doc2.rtf
你看,我需要分解逗号分隔的列并计算有多少个值。我不喜欢这个模式,但我正在处理一个现有的项目,不能改变它。我需要计数器在用户界面中显示。所以计数器也是必要的。我该怎么做?另外,我不能在php端使用它,因为我使用的是pyroms,我需要使用pyromstage来显示它,这不允许我在视图中使用php。
最佳答案
看看这个,也许是你想要的。必须使用helper tablesequence
SELECT * FROM
(SELECT S.Id Counter,
REPLACE(SUBSTRING(SUBSTRING_INDEX(document, ' , ', S.Id),
LENGTH(SUBSTRING_INDEX(document, ' , ', S.Id - 1)) + 1),
' , ', '') docs
FROM documents D, sequence S
WHERE D.id = 3) A
WHERE A.docs <> ''