[英]Selecting value once with multiple entries MySQL and PHP
用户可以创建允许其他用户注册的表单。 因此,如果用户创建表单,他也可以在所述表单上注册。
说我有以下表格
//Form
id | title | entry | userid
1 test entry for form 1
//form_register - Allows users to register for a particular form, form_id references form.id
form_id | userid
1 1
1 1
1 2
1 2
现在,假设我想为用户创建和注册的表单生成一个列表。 用户可以多次注册同一个表单,但我只想显示一次表单。 我不想要用户注册的每一次列表,只需要他们注册的表单列表,而不是实际的注册。
如果用户创建表单,则注册相同的表单2次我只希望表单信息显示1次。 我当前的查询显示表单信息3次(一次用于创建,2次用于注册)。
SELECT form.*, form_register.* FROM forms
INNER JOIN form_register on form_regiseter.form_id = form.id
WHERE form_register.userid = '$userid'
当此查询针对用户1运行时,它将生成以下内容
Title
test
test
test
我只想让它像这样显示一次
Title
test
对于userid2,这将是输出
Title
test
test
我想要它
Title
test
使用DISTINCT
或GROUP BY
获取唯一行。
或者,您也可以通过应用UNIQUE
-index禁止form_register
表中的重复条目。 您可以将INSERT
查询重写为REPLACE
查询,并且永远不会获得重复的行。
如果它不存在, REPLACE
将INSERT
一行,或者如果它存在则替换它(基于PRIMARY KEY
)。
SELECT DISTINCT form.*, form_register.* FROM forms
INNER JOIN form_register on form_regiseter.form_id = form.id
WHERE form_register.userid = '$userid'
可能就是你要找的东西
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.