简体   繁体   English

MySQL表连接上的正确语法?

[英]Correct Syntax on MySQL Table Joins?

I have two tables that I'm trying to join into a new table. 我有两个表,我正在尝试加入一个新表。 I have a "users" table, a "tasks" table and I have a blank "user_tasks" table. 我有一个“用户”表,一个“任务”表,我有一个空白的“user_tasks”表。 I'm trying to join them into the "user_tasks" table. 我正在尝试将它们加入“user_tasks”表。

Here are my tables. 这是我的表格。

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.

Here is my PHP & SQL query. 这是我的PHP和SQL查询。 I'm not sure what is wrong. 我不确定是什么问题。 I get an undefined index. 我得到一个未定义的索引。 Do I need to add hidden inputs on my HTML form? 我是否需要在HTML表单上添加隐藏的输入? Any help would be appreciated. 任何帮助,将不胜感激。

<?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);      

}

?> ?>

我认为你的选择中的表('用户,任务')是错误的,也许表是'user_tasks'

You have two concatenated queries,select + insert , try this: 你有两个连接的查询,选择+插入,试试这个:
1- insert + select separate: 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); 

AND Insert After,Insert does not use where: AND Insert After,Insert不使用where:

 $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 with SELECT: 2- INSERT with 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));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM