0

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

说我有以下表格

//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 次(1 次用于创建,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
4

2 回答 2

1

使用DISTINCTorGROUP BY获取唯一行。

或者,您也可以form_register通过应用UNIQUE-index 来禁止表中的重复条目。您可以将INSERT查询重写为REPLACE查询,并且您永远不会得到重复的行。

REPLACE如果它不存在则将INSERT一行,如果存在则替换它(基于PRIMARY KEY)。

于 2013-01-11T17:53:55.680 回答
1
SELECT DISTINCT form.*, form_register.* FROM forms
    INNER JOIN form_register on form_regiseter.form_id = form.id
    WHERE form_register.userid = '$userid' 

可能是你要找的

于 2013-01-11T17:54:20.170 回答