2014-01-12 99 views
0

我想了解如何在INSERT語句中沒有子查詢的情況下構建有效和優化的查詢。我有3個表格: - 用戶(userId,姓名,.....,....和deptId) - 移位(shiftId,.....,..... ,...) - 部門(部門,部門)試圖避免與準備好的MySQL語句的子查詢

在註冊表格中,用戶被要求選擇他的部門。 我想在users.deptId中插入從departments.deptId取的相對於辦公室選擇的id號。 只要我弄清楚如何製作它,我就會將下面的查詢轉換爲準備好的語句之一。

這裏是縮短的版本:

INSERT INTO users (userId, name , surname, deptId) 
VALUES 
('','$name', '$surname', (select deptId from departments where dept = '$choosen_dept')); 

有什麼辦法避免這種醜陋的子查詢?

非常感謝!

+0

沒有什麼錯子查詢。 –

+2

但是,爲什麼沒有人選擇deptid作爲值?那麼你可以插入它。 –

+0

@DigitalChris謝謝,但我認爲任何用戶不會喜歡從一個html選擇選擇如下:1,2,3,4 ...我正在做這個關係與部門表的原因是正常化.. – user3159187

回答

0

以下是我會做:

$query = "INSERT INTO users(user_id, surname, deptId) 
    SELECT '$name', '$surname', deptId 
    FROM departments WHERE dept = '$chosen_dept';"