2017-03-28 34 views
0

我想从表2中插入数据到table1,其中table2中的数据与表3中的值相乘。从其他表中插入选择乘法

Table 1和Table具有相同的列(ID,rangking,状态,接入,设施,普及)(ID是自动递增) 表2中有数据:

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 

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

回答

1

您选择了一个名为value,那么你应该在$ C2访问值列(在选择不需要别名(插入/选择的值由位置分配)

insert into table1 (a2,a3,a4,a5) 
SELECT (a2*$c2['value'] as A2,a3,a4,a5) FROM table2 

..

$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)); 
+0

仍然注释= mysqli_error()期望的是1个参数,0给 – Hafidh

+0

这个错误是不相关的我答案...我只发布查询SQL代码,而不是mysqli_query ..代码..在哪个查询你指? – scaisEdge

+0

没有()的SELECT命令..我把自己弄糊涂了。 Thx为您提供帮助! – Hafidh

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'(或手动插入,具体取决于它是否是用户输入)。

我在ON中使用了table3.id = :id,因为这肯定会将结果绑定到所选的行,但是如果您有正确的关联/外键,您可以使用它。

在未来,它可以帮助您的名字列有意义的事情,而不仅仅是a1a2

+0

其实它更多比a1,a2复杂。我只是简单地让人们容易理解其他人的看法。 我将它的所有相似(a2 * c2,a3 * c3,a4 * c4,a5 * c5)相乘,但没有相同的id加入它。 – Hafidh

+0

老实说,'a1 ... a5'比实际名称更令人困惑。即使发布问题。 – Rogue

+0

已经编辑它。我不能使用JOIN,因为在table3.id中没有任何相同的table2。编号 – Hafidh