从其他表中插入Select with Multiplication

时间:2017-03-28 11:59:16

标签: mysql

我希望从table2向table1插入数据,其中table2中的数据与table3中的值相乘。

table1和table2具有相同的列(id,rangking,status,access,facility,popular)(id是自动增量) table2有数据:

id |咆哮|状态|访问|设施|普及

1 | 9 | 4 | 2 | 4 | 6

2 | 4 | 5 | 1 | 2 | 7

3 | 5 | 8 | 5 | 3 | 4

table3有数据:

id |值
c2 | 0.2
c3 | 0.5
c4 | 0.1
c5 | 0.3

$sql = mysqli_query ($koneksi, "SELECT value 
           FROM table3 WHERE id ='c2'") or die(mysqli_error($koneksi));
$c2 = mysqli_fetch_array($sql);

$sql = mysqli_query ($koneksi, "SELECT value 
               FROM table3 WHERE id ='c3'") or die(mysqli_error($koneksi));
    $c3 = mysqli_fetch_array($sql);

insert into table1 (rangking,status,access,facility,popularity) 
SELECT (rangking*$c2['value'] as Rank,status *$c3['value'] as Stat,access,facility,popularity) FROM table2

从那个查询我发现错误,有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

您选择了一个名为insert into table1 (a2,a3,a4,a5) SELECT (a2*$c2['value'] as A2,a3,a4,a5) FROM table2 的列,然后您应该访问$ c2中的值(并且在select中不需要别名(用于插入/选择值按位置分配)

$sqlTest = mysqli_query ($koneksi, "insert into table1 (a2,a3,a4,a5) 
    SELECT (a2*$c2['value'] as A2,a3,a4,a5) FROM table2") or die(mysqli_error($koneksi));

...

 UPDATE my_table SET my_col= replace(my_col,'http://','') where not regexp_like(my_col,'*blibli*')

答案 1 :(得分:0)

您可以使用联接来保存多个查询:

INSERT INTO table1 (a2, a3, a4, a5)
SELECT table1.a2 * table3.value AS a2, table1.a3, table1.a4, table1.a5
FROM table1
INNER JOIN table3
  ON table3.id = :id

:id是一个命名参数,您可以将其绑定到'c2'的值(或手动插入,具体取决于它是否是用户输入)。

我在table3.id = :id中使用了ON,因为这肯定会将结果绑定到所选的行,但是如果你有一个正确的关联/外键,你会想要使用它。< / p>

将来,将列命名为有意义的内容会有所帮助,而不仅仅是a1a2等。