鉴于我了解MYSQL的基础知识,我将非常感谢以下方面的帮助:
表格 - >子记录架构
id |记录|元素|标题|名字|类型|值
该表存储通过Web表单提交的数据。 每行是一个字段 "记录"是标识每个唯一提交表单的字段,表单的标题存储在另一个表中:
表格 - >记录架构
id |提交|形式|标题|名称
我需要找到多次提交相同表单的所有用户(通过电子邮件发送):
(感谢@gwc的亲切帮助)
谢谢
答案 0 :(得分:1)
我不是sql pro或者其他什么,但我不知道你的查询中发生了什么:)
但请放手一搏。
编辑:
SELECT sr.Value
, COUNT( sr.* )
FROM Subrecords sr
JOIN Records r
ON sr.record = r.id
AND r.Title = 'form_name'
WHERE sr.Title = 'email'
GROUP BY sr.Value
HAVING COUNT( sr.* ) > 1
我无法完全理解您的桌子发生了什么,所以如果有超过1个表单,这将无法满足您的需求。
答案 1 :(得分:0)
已针对其他要求进行了更新
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
<强>原始强>
假设子记录和记录之间的关系是subrecords.record = records.id:
SELECT s.value as email
,r.id
,r.title
,COUNT(*) as form_count
FROM records r
JOIN subrecords s
ON s.record = r.id
AND s.title = 'email'
GROUP BY s.value
,r.id
,r.title
HAVING COUNT(*) > 1
会告诉您哪些用户(通过电子邮件)多次提交了哪些表单(按ID和标题)以及总共提交了多少次。
如果您需要的只是表单的ID,那么应该这样做:
SELECT value as email
,record
,COUNT(*) as form_count
FROM subrecords
WHERE title = 'email'
GROUP BY value
,record
HAVING COUNT(*) > 1