我对 MYSQL 的了解相当基础,希望能提供以下帮助:
子记录模式
编号 | 记录 | 元素 | 标题 | 姓名 | 类型 | 价值
上表存储通过 Web 表单提交的数据。
- 每行是一个字段(即“电话号码”、“电子邮件”、“主题”等),其中“标题”是字段的标签,“值”是提交字段的内容
- “记录”标识每个唯一提交的表单,它是下面阐明的“记录”表(records.id)的外键(相同的表单提交多次生成多个唯一记录)
- 要知道提交了哪个表单,我们需要查看另一个表
记录模式
编号 | 提交 | 表格 | 标题 | 姓名
- id对每个提交都是唯一的(不是每个表单唯一的,同一个表单提交多次生成多个唯一的id)
- form 是另一个表(forms.id)的外键,它定义了表单的结构(所有字段等),并没有真正简化检索我需要的数据。
- records.name 是一个文本字符串,用于标识每个唯一的表单,这是选择我们要查找的表单所必需的
我需要找到多次提交相同表单的所有用户(通过电子邮件),这里有一些进一步的说明:
- 所有电子邮件地址(subrecords.value,其中 subrecords.title = 'email')
- 提交了多个相同的表单(由 records.name = "string-form-name" 标识)。
- subrecords.record = record.id 只需要加入表格(每个表单提交都是唯一的并生成一个新的record.id,因此对于识别用户和表单都没有帮助)。
- records.form 是一个外键 = forms.id (它似乎没有用,因为它通过需要查看另一个表使查询复杂化,使用 records.name 来识别表单似乎更简单)
到目前为止,感谢另一个用户,我有这个:
SELECT value as email
,record
,COUNT(*) as form_count
FROM subrecords
WHERE title = 'email'
AND record IN (SELECT id
FROM records
WHERE name = 'form_name'
)
GROUP BY value
,record
HAVING COUNT(*) > 1
它返回一个空值,但我无法缩小如何改进它以使其工作。谢谢