捕获行的ID以用作表的名称

时间:2013-02-01 17:57:13

标签: php mysql sql

只是为了保存任何阅读此次和麻烦的人,请勿使用此方法存储调查。正如答案所指出的那样,编程非常糟糕(更不用说对小猫很危险)

如果这个问题有点复杂,请原谅我。我正在制作一个程序,允许用户创建调查并发布给用户使用。

长话短说,我的桌子看起来像这样:

**survey_info**

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

现在,在创建调查时,还会创建一个新表,该表是为了保存该调查的hte输入而自定义构建的。我正在为这些新表使用的命名模式是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用作其他表名的一部分(或者甚至可以完成) 任何帮助,甚至是正确方向的一点都将不胜感激!

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

survey
------
id PK
title

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

surveyResponse
--------------
id PK
surveyOptionId FK
response