使用多个条目MySQL和PHP选择一次值

使用多个条目MySQL和PHP选择一次值,php,mysql,select,Php,Mysql,Select,用户可以创建允许其他用户注册的表单。因此,如果用户创建表单,他也可以在该表单上注册 假设我有以下表格 //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

用户可以创建允许其他用户注册的表单。因此,如果用户创建表单,他也可以在该表单上注册

假设我有以下表格

//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次(一次用于创建,两次用于注册)。

    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
groupby
获取唯一行

或者,您也可以通过应用
唯一
-索引来禁止
表单注册
表中的重复条目。您可以将
INSERT
查询重写为
REPLACE
查询,您将永远不会得到重复的行

REPLACE
插入一行(如果该行不存在),或替换它(基于
主键)

SELECT DISTINCT form.*, form_register.* FROM forms
    INNER JOIN form_register on form_regiseter.form_id = form.id
    WHERE form_register.userid = '$userid' 

可能就是你要找的

你没有存储一个“类型”字段来指定他们是注册还是创建?太好了,就是这样。谢谢,时间一过我就接受。对不起,我应该说得更清楚一点。用户可以多次注册表单。这有点像登录/退出类型的系统,所以除了日期之外,还需要复制。