2012-06-18 74 views
1

你好給誰就給誰願咬這個咬了咬牙,MYSQL插入單個表使用兩個不同的表

我遇到的如何使用結果集的子查詢的選擇到另一個表中的多個例子來的結果。 我所擁有的不過是:

SELECT `klanten_zakelijk`.`bedrijfs_id`, `klanten`.`klant_id` 
    FROM `klanten`,`klanten_zakelijk` 
    WHERE `klanten`.`emailadres` = '$email' 
    AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr' 

正如你可以看到我從兩個不同的表的結果,需要將它們移植到另一個表。

我希望將這些值插入表klant_bedrijf_machtiging

INSERT INTO `klant_bedrijf_machtiging` (`klant_id`, `bedrijfs_id`, `machtiging`) VALUES ('8501', '1', '3'); 

machtiging是與插入標準3,但我需要能夠以及更改爲1,如果公司已經存在,但我會攔截,在我的代碼另一部分。

我看到的所有例子都只是從一張表導入到花葯表中的結果。 當您從兩個表中獲取結果時,是否適用相同的邏輯?如果是這樣,那麼實施這個最明智和最有效的方法是什麼?

因此,爲了使問題簡短: 如何獲得bedrijfs_idklant_id到相應的列到klant_bedrijf_machtiging同時仍自己能夠操縱的最後一列machtiging在短短1查詢。

回答

3

好消息! MySQL有一個簡單的方法來做到這一點:MySQL Insert Into w/ Select

所以你的情況這將是:

INSERT INTO klant_bedrijf_machtiging (`klant_id`, `bedrijfs_id`, `machtiging`) 
SELECT `klanten`.`klant_id`, `klanten_zakelijk`.`bedrijfs_id`, 3 
    FROM `klanten`,`klanten_zakelijk` 
    WHERE `klanten`.`emailadres` = '$email' 
    AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr' 

至於改變的項目爲1,如果它已經存在,我不知道你會怎麼做在一個查詢中不會造成太大的混亂。

+0

我認爲這是正確的,我只是不確定這是否也是正確的方式來處理來自其他兩個表的數據。 感謝您確認我的懷疑。 將零件更改爲一個將是另一個挑戰,但我認爲我會在註冊過程中儘早攔截該案例。 非常感謝。 – Tschallacka

+1

@MichaelDibbets不客氣。樂意效勞。您可以使用此方法以及任何選定查詢的結果,該查詢授予您插入的表具有字段。我已經使用這種方法來查詢具有大量從5到10個表格抓取的聯接,具體取決於規範化和分散的東西。我很高興它存在。 – EmmanuelG

+0

我可以想象。我不確定這會起作用,因爲我唯一能找到的就是一個表格選擇示例。很高興你的回答如此全面。 – Tschallacka

0
INSERT INTO yourtable (fields) SELECT `klanten_zakelijk`.`bedrijfs_id`, `klanten`.`klant_id` 
    FROM `klanten`,`klanten_zakelijk` 
    WHERE `klanten`.`emailadres` = '$email' 
    AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr' 
+0

謝謝你的回答。 – Tschallacka

+0

@MichaelDibbets:反而發表評論,你可以用upvote向你展示讚賞 – dynamic

1
INSERT INTO `klant_bedrijf_machtiging` (`klant_id`, `bedrijfs_id`, `machtiging`) 
(SELECT `klanten`.`klant_id`, `klanten_zakelijk`.`bedrijfs_id`, 3 
FROM `klanten`,`klanten_zakelijk` 
WHERE `klanten`.`emailadres` = '$email' 
AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr') 
+0

謝謝你的回答。不幸的是,我只能接受一個答案:(儘管謝謝你的努力! – Tschallacka

-1
INSERT INTO klant_bedrijf_machtiging (`klant_id`, `bedrijfs_id`, `machtiging`) 
SELECT `klanten`.`klant_id`, `klanten_zakelijk`.`bedrijfs_id`, 3 
    FROM `klanten`,`klanten_zakelijk` 
    WHERE `klanten`.`emailadres` = '$email' 
    AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr'