2013-05-12 69 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