2017-02-10 1 views
1

私は新しいテーブルに参加しようとしている2つのテーブルがあります。私は "users"テーブル、 "tasks"テーブルを持っていて、空の "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

次の2つの連結クエリを持って、選択+挿入
の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); 

そして、後の挿入、挿入は使用しません:SELECTと

$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:

$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のパラメータを持つレコードだけを挿入し、2番目のものはselectによって返されたレコードの数を挿入します。 –

+1

ありがとう。私はそれらを試し、彼らが働くかどうかを見ます。ご協力ありがとうございました。 – jkloster7