【问题标题】:MERGING 3 TABLES INTO ONE AND INSERTING INTO DATABASE将3个表合并为一个并插入数据库
【发布时间】:2014-03-15 18:15:11
【问题描述】:

我正在尝试在我的数据库中将 3 个表合并为 1 个。 我的表名 = table1、table2、table3 我将数据插入 table4 每个表都有code、team、p1、p2、p3列

它不会进入数据库。

我希望数据库中的合并插入如下所示:

代码、团队、名称 1、名称 2、名称 3、名称 4、名称 5、名称 6、名称 7、名称 8、名称 9

这是我的带有列的表格 表 1:名称 1、名称 2、名称 3 表 2:名称 4、名称 5、名称 6 表 3:名称 7、名称 8、名称 9

这是我到目前为止所拥有的,但它不起作用。有什么帮助吗?

INSERT INTO table4
VALUES (code,team,name1,name2,name3,name4,name5,name6,name7,name8,name9)
SELECT table1.code1, 
       table1.team1, 
       table1.name1, 
       table1.name2, 
       table1.name3, 
       table2.name4, 
       table2.name5, 
       table2.name6, 
       talbe3.name7, 
       table3.name8, 
       table3.name9 
FROM table1, table2, table3
WHERE table1.team = table2.team  
AND table3.team = table1.team
AND table3.team = table2.team
INSERT INTO table4 VALUES ($code, $team, $name1, $name2, $name3, $name4, $name5, $name6,     
$name7, $name8, $name9);

【问题讨论】:

  • 'name 1' 听起来不像是一个有效的列名,您使用的是什么类型的数据库?
  • 怎么不工作了?抛出什么错误?
  • 你使用SELECT代码插入数据?
  • 如果您的列名实际上是name 1name 2 等,您需要在它们周围添加反引号`name 1``name 2` 等。虽然列名中的空格从来都不是一个好的主意。另外,您的INSERT INTO ... 在哪里,因为这只显示SELECT

标签: php mysql database join


【解决方案1】:

我认为您遇到了错误,因为您在 name 9 之后有一个尾随逗号,而且您也不应该在名称中包含空格。假设您实际上并不想要空格,我们还可以将您的查询优化为正确的 ANSI 语法:

INSERT INTO table4 (code,team,name1,name2,name3,name4,name5,name6,name7,name8,name9)
SELECT TableOne.code
    ,TableOne.team
    ,TableOne.name1
    ,TableOne.name2
    ,TableOne.name3
    ,TableTwo.name4
    ,TableTwo.name5
    ,TableTwo.name6
    ,TableThree.name7
    ,TableThree.name8
    ,TableThree.name9 
FROM table1 AS TableOne
INNER JOIN table2 AS TableTwo ON TableTwo.team = TableOne.team
INNER JOIN table3 AS TableThree ON TableThree.team = TableTwo.team

别名假定 code 来自 table1。我假设您在team 中的SELECT 中遇到了一个模棱两可的错误,位于name9 之后的尾随逗号之上。

【讨论】:

  • 进行了更正,但仍未进入数据库。
  • 修改为包含INSERT INTO,这是放入数据库所必需的。除非您的列名称中包含$,否则不应包含它们,并且INSERT INTO 语句位于SELECT 之前。如果您仍然没有得到任何值,请单独运行 SELECT 语句以确保您实际返回值。
  • 我的错误---- #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 'SELECT table1.code ,table1.team ,table1.name1 ,table1.name3' 附近使用正确的语法
  • 顺便说一句----我把这段代码直接放在phpmyadmin sql中
  • 那是我复制和粘贴的坏处,在使用 INSERT INTO SELECT 语句时,您不包括 VALUES
【解决方案2】:

好的,伙计……我理解你的问题,你将要合并表或类似的东西。 现在在您查询中,您只是从三个表中选择数据,而不是将其插入到 4 个表中。 为此,您必须将 SELECTED 结果存储到变量或数组中,然后将其一一插入到 4 表中。 参考谷歌;如果你把一些堆放在哪里......

一切顺利(Y)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 2012-09-09
    • 2013-12-08
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    相关资源
    最近更新 更多