2011-08-20 101 views
0

我有一个MySQL表称为Mysql的从表中的多个ID中选择并将它们插入到另一个表

上第一表格中的USER_ID与第二表,以便quiz_id = ID(jos_users)的id联 如何建立一个查询多个插入到jos_users_quizzes表中的所选部门的ID ...在一个点击

我在想一个子查询或循环会做,但不知道如何构造查询。 我需要选择所选部门的所有用户ID。例如有部门的名单,并且一旦选择了部门,选择所有ID属于该部门并插入所有的ID添加到其他表(quizid,(alldepartment IDS)

提前感谢!

代码从和ASP.NET表单插入....

string quizidselected = DropDownList1.SelectedValue; 
      string deptselected = ListBox2.SelectedValue; 
      //OdbcCommand cmd = new OdbcCommand("INSERT INTO jos_jquarks_users_quizzes (quiz_id,user_id) VALUES (' " + quizidselected + " ',677)"); 
      OdbcCommand cmd = new OdbcCommand("INSERT INTO jos_jquarks_users_quizzes (user_id, quiz_id) SELECT id, ' " + quizidselected + " ' FROM jos_users WHERE department = ' " + deptselected + " '"); 
+0

有点困惑在这里...是部门的ID上jos_users或部门领域的id字段?\ – NullUserException

+0

是的,以及在jos_users每个ID有一个部门,所以我想t选择所有的ID,其中部门'部门'在列表上被选中 – Tony77

+0

你的问题有点混乱。我得到'jos_users_quizzes.id'链接到'jos_users.id',但是你也说明了* quiz_id = id(jos_users)*,这没什么意义。 –

回答

1

基于我的解释你想要什么...

INSERT INTO jos_users_quizzes (user_id, quiz_id) 
    SELECT id, :new_quiz_id 
     FROM jos_users 
     WHERE department = :department 
+0

这会进行多次插入,比如说20个ID等于选定的部门? – Tony77

+0

假设'jos_users_quizzes'中的'id'字段是一个自动增量字段,并假设所选部门有20个用户,那么是的。 –

+0

冒号后的值是什么?是那个mysql语法?\ – Tony77

0

如果您在使用自动递增设置id,那么你可以做这样的事情

insert into jos_users_quizzes (quiz_i) select id from jos_users; 
+0

这是否会进行多次插入,例如说20个id等于选定的区域? – Tony77

+0

根据结果,如果'select'操作结果包含20条记录,那么是。 – toopay

0

如果你知道关键字如电子邮件地址,部门ID或部门名称很容易。

例如:

$depname = "Logistics"; // PHP // department name 
$quizid = "Quiz-12"; // PHP // quiz name 

然后使插入查询:

<?php 
$query = "INSERT INTO `to_table` (user_id, quiz_id) 
       SELECT id, '$quizid' FROM `from_table` 
       WHERE department = '$depname'"; 
?> 

有关兼容性的,如果你从网页获得的值,比如你可以用小写:

<?php 
$query = "INSERT INTO `to_table` (user_id, quiz_id) 
       SELECT id, LOWER('%$quizid%') 
       FROM `from_table` 
       WHERE department like LOWER('%$depname%')"; 
?> 

当您从网页插入数据时,使用addslashes命令来保护数据库:

<?php 
$query = "INSERT INTO `to_table` (user_id, quiz_id) 
       SELECT id, LOWER('%".addslashes($quizid)."%') 
       FROM `from_table` 
       WHERE department like LOWER('%".addslashes($depname)."%')"; 
?> 
相关问题