1

この時間と手間を省くために、この方法を使用してアンケートを保存しないでください。回答で指摘されているように、これは信じられないほど貧弱なプログラミングです (子猫にとって危険なことは言うまでもありません)。

この質問がやや複雑な場合はご容赦ください。私は、ユーザーが調査を作成し、ユーザーが受けられるように投稿できるプログラムの構築に取り組んでいます。

簡単に言えば、次のようなテーブルがあります。

**survey_info**

id          bigint(20)     Auto_increment     Primary Key
title       varchar(255)
category    bigint(20)
active      tinyint(1)
length      int(11)
redirect    text

現在、調査が作成されると、その調査の入力を保持するためにカスタム構築された新しいテーブルも作成されます。これらの新しいテーブルに使用している命名スキーマは、survey_{survey_id} です。

私がやりたいことは、調査のリストで、調査への回答数をその右側に置くことです。

さて、私の実際の質問はこれです。利用可能な調査のリストを収集するために使用しているのと同じクエリ内で、コレクション テーブル (survey_id) の行数を取得する方法はありますか? 調査ごとに 2 番目のクエリを使用して行数を取得するだけでこれを簡単に実行できることはわかっていますが、ユーザーの調査の数が多いほど、このプロセスに時間がかかるのではないかと心配しています。それで、次のようなことをする方法はありますか:

SELECT s.id AS id, s.title AS title, c.title AS ctitle, s.active AS active, s.length AS length, s.redirect AS redirect, n.num FROM survey_info s, survey_category c, (SELECT COUNT(*) AS num FROM survey_s.id) n WHERE s.category = c.id;

s.idを他のテーブルの名前の一部として使用する方法がわかりません(または、それが可能かどうかさえわかりません)助け、または正しい方向へのポイントさえいただければ幸いです!

4

2 に答える 2

3

すべてのアンケートに 1 つのテーブルを使用する必要があります。
新しく作成した id をテーブル名としてではなく、そのテーブルのアンケート id として追加します。

于 2013-02-01T18:02:56.373 に答える
1

すべての調査オプションを 1 つのテーブルに格納するリレーショナル モデルを作成します。これはサンプル デザインです。

survey
------
id PK
title

surveyOption
--------------
id PK
survey_id FK
option

surveyResponse
--------------
id PK
surveyOptionId FK
response
于 2013-02-01T18:10:45.887 に答える