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) 中的行数?我意识到我可以很容易地做到这一点,只需对每个调查使用第二个查询并获取它的行数,但我担心用户拥有的调查数量越多,这个过程就会变得越耗时。那么有没有办法做类似的事情:

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

您需要为所有调查使用一张表。
添加新创建的 id 不是作为表名,而是作为该表中的调查 id。

于 2013-02-01T18:02:56.373 回答
1

您创建一个关系模型,将所有调查选项存储在一个表中。这是一个示例设计:

survey
------
id PK
title

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

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