MySQL从2个不相关的表中选择并将值插入到第三个表中

时间:2014-08-05 15:01:30

标签: mysql-error-1064

我想创建一个选择和插入查询,可以从Customers表格namecustomer_number以及Stock表格中选择inven_codequant_left

第三个表名为sales,其中没有任何内容。我想在sales表中插入上面的select查询的结果。

以下是表结构的样子:

客户表:

Name VARCHAR (50)  customer_number CHAR (7) PRIMARY KEY
Jack Rafuse        CUST123
Susan Jackson      CUST456

股票表:

product_name VARCHAR(50)  inven_code CHAR (6) PRIMARY KEY   quant_left INT
baseballs                 123456                                6
bats                      789101                                3

销售表:

Id INT NOT NULL AUTO_INCREMENT
customer_number VARCHAR(50) 
Inven_code CHAR (6) 
quant_left INT

使用我所拥有的选择代码继承查询,但是它给出了错误:

$query = "INSERT INTO sales (customer_number, inven_code, quant_left)

          SELECT customers.customer_number, stock.inven_code, stock.quant_left 
          FROM customers, stock     
          WHERE Customers.customer_number='CUST123' AND
                Stock.inven.code='123456' AND
                Stock.quant_left ='6' “;

$result = mysql_query($query, $link) or die(mysql_error($link));

这是我得到的错误:

您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在第2行的“SELECT customers.customer_number,stock.inven_code,stock.quant_left”附近使用正确的语法

可以提供任何可以提供的帮助。

2 个答案:

答案 0 :(得分:0)

如果我们假设您的选择查询有效,您可以在mysql控制台环境中单独测试它。尝试以下方法:

insert into sales  select 0, customers.customer_number, stock.inven_code, stock.quant_left from ...

答案 1 :(得分:0)

问题不在您的查询中,但在您的PHP代码中,因为您的结束语不是正确的。

替换为",如下所示:

<?php
$query = "INSERT INTO sales (customer_number, inven_code, quant_left)    
          SELECT C.customer_number, S.inven_code, S.quant_left 
          FROM customers C, stock S   
          WHERE C.customer_number='CUST123' AND
                S.inven.code='123456' AND
                S.quant_left ='6'";

$result = mysql_query($query, $link) or die(mysql_error($link));
?>

这就是我把你的桌子弄乱了#39;名称,以便代码可以更轻。此外,这只是使代码运行的一种方法,否则您必须知道不推荐使用mysql_ *。您需要使用mysqli_*PDO以及prepared statements,以避免SQL injections