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

时间:2013-01-11 17:51:53

标签: 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
   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

2 个答案:

答案 0 :(得分:1)

使用DISTINCTGROUP 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' 

可能是您正在寻找的