2016-11-27 88 views
-1
  $attrib= array('State', 'one', 'two', 'three', 'four', 'five', 'six');    
      for ($i=0; $i <6; $i++) { 
       $sql= "insert into table(Attribute, col1, col2) 
       select '$attrib[$i]', MIN(cast(".$attrib[$i]." as decimal(5,1))), MAX(cast(".$attrib[$i]." as decimal(5,1))) from table2"; 
       $run_sql= mysqli_query($conn, $sql); 
      } 

      for ($i=0; $i < 6; $i++) { 
       $sql= "insert into table(col3, col4) 
       select MIN(cast(".$attrib[$i]." as decimal(5,1))), MAX(cast(".$attrib[$i]." as decimal(5,1))) from table2 where Class=1"; 
       $run_sql= mysqli_query($conn, $sql); 
      } 

這裏的問題在於,第二個for循環開始插入到插入col1和col2結束的col3和col4中。因此,col3和col4的所有值都是空的,我想更新這些空值,而不是在col1和col2的值結束時開始插入。用選擇更新空屬性

+0

你在'table2'表中有任何'主鍵' ? – EhsanT

+0

@EhsanT不,我沒有 – tooba

回答

0

如果你有你的表table2,倒不如一個Primary Key,但因爲你的子查詢只返回一個排,你還可以在這兩種查詢在一個查詢中組合這樣的:

$sql = "insert into table(Attribute, col1, col2, col3, col4) 
select t2_1.".$attrib[$i].", MIN(cast(t2_1.".$attrib[$i]." as decimal(5,1))), MAX(cast(t2_1.".$attrib[$i]." as decimal(5,1))), MIN(cast(t2_2.".$attrib[$i]." as decimal(5,1))), MAX(cast(t2_2.".$attrib[$i]." as decimal(5,1))) 
from table2 as t2_1, table2 as t2_2 
where t2_2.Class = 1"; 

我加入這兩個表(這兩個表都是相同的table2),我給他們別名t2_1t2_2(你可以用更有意義的任何其他名稱來更改這兩個名稱),我選擇字段我想從他們每個人。

所以,你的代碼將只有一個循環,如下所示:

$attrib = array('State', 'one', 'two', 'three', 'four', 'five', 'six');    
for ($i = 0; $i <= count($attrib); $i++) { 
    $sql = "insert into table(Attribute, col1, col2, col3, col4) 
    select t2_1.".$attrib[$i].", MIN(cast(t2_1.".$attrib[$i]." as decimal(5,1))), MAX(cast(t2_1.".$attrib[$i]." as decimal(5,1))), MIN(cast(t2_2.".$attrib[$i]." as decimal(5,1))), MAX(cast(t2_2.".$attrib[$i]." as decimal(5,1))) 
    from table2 as t2_1, table2 as t2_2 
    where t2_2.Class = 1"; 
    $run_sql= mysqli_query($conn, $sql); 
} 

另外請注意,您for,而是採用了硬編碼數最好是你count()得到的長度該數組(因爲我在這個代碼中使用),並且由於你有7個記錄在你的數組中,我認爲你的for循環條件應該是<=而不是<

+0

你的代碼是這樣的,我可以爲你改變它,所以請告訴我,你想要'Attribute'字段的值總是'State'字段的值嗎? – EhsanT

+0

解決了謝謝。 – tooba

+0

:)太棒了,歡迎您 – EhsanT