2013-05-12 103 views
0

我想在名爲acname的字段中的表glmast中插入一個值。MySQL使用外鍵插入查詢

我使用的條件如下:

g.gl_id = p.gl_id AND p.pl_id='$pdidedit' with g as glmast and p as packlist 

我想加入,並嘗試下面的代碼..

INSERT INTO glmast (acname) 
VALUES 
('$glidnew') SELECT glmast.acname WHERE glmast.gl_id = packlist.gl_id AND packlist='$pdidedit'"; 

任何幫助非常appreciated..Thanks大家..

+0

你得到了什麼錯誤信息? – ajtrichards 2013-05-12 19:25:07

+1

是INSERT INTO .. VALUES .. SELECT'有效的語法嗎? – karthikr 2013-05-12 19:26:10

+0

我嘗試了一些輸入值的phpadmin ..它沒有執行.. @ ajtrichards謝謝你的回覆:) – user2234992 2013-05-12 19:28:03

回答

2

你可以寫插入像

INSERT INTO glmast (acname) VALUES ('$glidnew'); 

INSERT INTO glmast (acname) 
SELECT glmast.acname from glmast,packlist 
    WHERE glmast.gl_id = packlist.gl_id 
    AND packlist.gl_id = '$pdidedit'"; 

有想法,在第二個例子中可能有多個刀片在當select返回多行的情況。

+0

有沒有'VALUES'關鍵字當你使用'SELECT'作爲數據時。 – Barmar 2013-05-12 19:29:27

+0

@mpapec我將如何插入我想要的值..無論如何感謝您的回答.. – user2234992 2013-05-12 19:32:53

+0

@ user2234992,首先進行簡單的選擇,返回您想要的'acname'的值。之後,您可以像第二個示例中那樣使用插入。 – 2013-05-12 19:35:45

1

我想這可能是你想要做什麼:

INSERT INTO glmast(gl_id, acname) 
SELECT '$glidnew', glmast.acname 
FROM glmast JOIN packlist ON glmast.gl_id = packlist.gl_id 
WHERE packlist.pl_id='$pdidedit' 

你一直說INSERT,但我敢肯定你的意思是UPDATE:

UPDATE glmast g 
JOIN packlist p ON g.gl_id = p.gl_id 
SET g.acname = '$glidnew' 
WHERE p.pl_id = '$pdidedit' 

或者,也許這是它:

INSERT INTO glmast (acname, col1, col2, col3, ...) 
SELECT '$glidnew', g.col1, g.col2, g.col3, ... 
FROM glmast g 
JOIN packlist p ON g.gl_id = p.gl_id 
WHERE p.pl_id = '$pdidedit' 
+0

謝謝你的回覆..我想$ glidnew插入到glmast表的acname字段..希望清除..再次感謝 – user2234992 2013-05-12 19:40:31

+0

然後你在用什麼'select glmast.acname'作爲?你確定你不想更新而不是INSERT嗎? – Barmar 2013-05-12 19:42:23

+0

是這是插入到一個新的行..這就是我需要做的.. @Barmer – user2234992 2013-05-12 19:45:15

0

我相信它是這樣的你想牛逼Ø實現

INSERT INTO glmast (acname) VALUES('$glidnew') 
WHERE (
    SELECT glmast.acname FROM glmast GM 
    JOIN packlist PL ON (PL.gl_id = GM.gl_id) 
    WHERE PL.pl_id='$pdidedit' 
) 

但是,語法是無效的MySQL中。 你必須先運行SELECT語句,然後再插入到基於來自SELECT查詢定ResultSet的glmast表:

第1步:

SELECT glmast.acname FROM glmast GM 
JOIN packlist PL ON (PL.gl_id = GM.gl_id) 
WHERE PL.pl_id='$pdidedit' 

第2步:

INSERT INTO glmast (acname) VALUES({values from Step1}) 

某種程度上,可以說$glidnew代表Step1的值。

+0

爲什麼要加入?而且您在步驟1或步驟2中不使用「$ glidnew」。 – Barmar 2013-05-12 20:15:26

+0

@Barmar - 當然,它不應該是左連接。謝謝(我使用的最多,所以這只是一個習慣:-))$ glidnew與step1中的值相同。我必須澄清這一點。 – bestprogrammerintheworld 2013-05-12 20:22:28