2017-02-10 57 views
1

我有两个表,我试图加入一个新表。我有一个“用户”表,一个“任务”表,我有一个空白的“user_tasks”表。我试图将它们加入到“user_tasks”表中。正确的MySQL表连接语法?

这是我的表格。

users = user_id, first_name, last_name 
tasks = task_id, task_description 
user_tasks = ut_id, ut_user_id, ut_first_name, ut_last_name, ut_task_id, ut_task_description. 

这是我的PHP & SQL查询。我不确定什么是错的。我得到一个未定义的索引。我需要在我的HTML表单上添加隐藏的输入吗?任何帮助,将不胜感激。

<?php 

if(isset($_POST['submit'])){ 

    $user_id = $_POST['user_id']; 
    $first_name = $_POST['first_name']; 
    $last_name = $_POST['last_name']; 

    $task_id = $_POST['task_id']; 
    $task_description = $_POST['task_description']; 

    $ut_id = $_POST['ut_id']; 
    $ut_user_id = $_POST['ut_user_id']; 
    $ut_first_name = $_POST['ut_first_name']; 
    $ut_last_name = $_POST['ut_last_name']; 
    $ut_task_id = $_POST['ut_task_id']; 
    $ut_task_description = $_POST['ut_task_description']; 

    $join_query = "SELECT users.user_id, users.first_name, users.last_name, tasks.task_id, tasks.task_description FROM users, tasks INNER JOIN user_tasks ON users.user_id = user_tasks.ut_id INNER JOIN user_tasks ON tasks.task_id = user_tasks.ut_id INSERT INTO user_tasks (ut_user_id, ut_first_name, ut_last_name, ut_task_id, ut_task_description) VALUES ($user_id, $first_name, '$last_name', '$task_id', $task_description) WHERE ('$first_name' = '$ut_first_name', '$last_name' = '$ut_last_name', $task_id = $ut_task_id, '$task_description' = '$ut_task_description') "; 

    $result = mysqli_query($connection, $join_query);  

} 

?>

+0

你到底想干什么?选择还是插入?你在同一个查询中混合两个,并且不能这样做。 –

+0

我正在尝试将任务分配给特定的用户。我的表单工作得很好。但数据并未填充到新表中。 – jkloster7

+0

你必须提供你想要的更多细节。向我们展示样本数据和预期结果。 –

回答

0

我想在你的选择表( '用户任务')是错误的,也许该表是 'user_tasks'

+0

好极了。谢谢。我会仔细检查一下,看看它是否会起作用。 – jkloster7

0

你有两个串联的查询,选择+插入 ,试试这个:
1插入+选择不同的:

  $join_query = "SELECT users.user_id, users.first_name, 
      users.last_name, tasks.task_id, 
      tasks.task_description FROM users 
      INNER JOIN user_tasks ON users.user_id = user_tasks.ut_user_id 
/*users.user_id = user_tasks.ut_id*/ 
      INNER JOIN tasks ON task.task_id=user_task.ut_task_id"; 

      $result = mysqli_query($connection, $join_query); 

并插入后,插入不使用其中:

$insert_query="INSERT INTO user_tasks (ut_user_id, ut_first_name, ut_last_name, 
       ut_task_id, ut_task_description) 
       VALUES ($user_id, '$first_name', '$last_name', 
       '$task_id', '$task_description')"; 


mysqli_query($connection,$insert_query) or die(mysqli_error($connection)); 

2- INSERT与SELECT:

$query="INSERT INTO user_tasks (ut_user_id, ut_first_name, ut_last_name, 
        ut_task_id, ut_task_description) 
SELECT users.user_id, users.first_name, 
      users.last_name, tasks.task_id, 
      tasks.task_description FROM users 
      INNER JOIN user_tasks ON users.user_id = user_tasks.ut_user_id /*users.user_id = user_tasks.ut_id*/ 
      INNER JOIN tasks ON task.task_id=user_task.ut_task_id"; 

     mysqli_query($connection,$query) or die(mysqli_error($connection)); 
+0

好吧。那么我应该使用这两种还是另一种? – jkloster7

+0

这取决于,第一个将只插入一个带有POST参数的记录,第二个将插入select所返回的记录数。 –

+1

好的谢谢。我会尝试他们两个,看看他们是否工作。感谢您的帮助。 – jkloster7