2017-03-28 37 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