用户可以创建允许其他用户注册的表单。因此,如果用户创建表单,他也可以在所述表单上注册。
说我有以下表格
//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
答案 0 :(得分:1)
使用DISTINCT
或GROUP BY
获取唯一的行。
或者,您也可以通过应用form_register
索引来禁止UNIQUE
表中的重复条目。您可以将INSERT
查询重写为REPLACE
个查询,但您永远不会获得重复的行。
REPLACE
如果不存在则会INSERT
一行,或者替换它(基于PRIMARY KEY
),如果存在的话。
答案 1 :(得分:1)
SELECT DISTINCT form.*, form_register.* FROM forms
INNER JOIN form_register on form_regiseter.form_id = form.id
WHERE form_register.userid = '$userid'
可能是您正在寻找的