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

ここで、ユーザーが作成してサインアップしたフォームのリストを生成したいとします。ユーザーは同じフォームに複数回サインアップできますが、フォームを表示したいのは 1 回だけです。ユーザーがサインアップするたびにリストが必要なわけではなく、実際のサインアップではなく、サインアップしたフォームのリストだけが必要です。

ユーザーがフォームを作成し、同じフォームに 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

DISTINCTまたはを使用GROUP BYして、一意の行を取得します。

または、 -indexform_registerを適用して、テーブル内のエントリの重複を禁止することもできます。クエリをクエリにUNIQUE書き換えることができ、重複する行が取得されることはありません。INSERTREPLACE

REPLACEINSERT存在しない場合は行を、存在する場合は ( に基づいて) 置き換えます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 に答える