2016-07-20 21 views
1

id、totalをtable_orderから選択し、idのリストを作成するには、add_byによるtotal/groupの合計をどのようにしますか?そして、add_byに従ってtable_billにidとtotalの合計のリストを挿入します。これまで私がこれまでしてきたこと。次いでtable_bill挿入MySQL SELECT GROUP BY

103 | 350 | 4 
104 | 450 | 6 
105 | 250 | 6 
106 | 400 | 4 

(| |総add_by ID):(リスト|量|ユーザー)を得るため

103,106 | 750 | 4 
104,105 | 700 | 6 
+1

を行うことができますが、これはあなたの素晴らしいアイデアだと思う場合は、[ジャンクションテーブル](http://stackoverflow.com/a/32620163)をお読みください。 – Drew

答えて

1

クエリtable_orderからのサンプルデータについて

//get unpaid orders 
$sql = mysql_query("SELECT id,total,add_by FROM `order` WHERE status = '1'"); 
$res = mysql_num_rows($sql); 

if($res>=1){ 
$tot = 0; 
$ids = ''; 
while($row = mysql_fetch_array($sql)){ 
$ids .= $row['id'].","; 
$tot += $row['total']; 
$uid = $row['add_by']; 
} 
$ids = rtrim($ids, ","); 

/*echo "<br>List of ID: ".$ids; 
echo "<br>Total: ".$tot."<br>"; 
echo "<br>Add by: ".$uid."<br>";*/ 

//create bill 
$sql_bill = "INSERT INTO `bill` (list,amount,user) VALUES('$ids','$tot','$uid')"; 
$query = mysql_query($sql_bill); 
} 

あなたの結果は

select group_concat(id) ,sum(total) ,add_by 
from `order` 
group by add_by 

その後、あなたは、単一のクエリコマンドで

insert into table_bill (list , amount , user) 
select group_concat(id) ,sum(total) ,add_by 
from `order` 
group by add_by 
+0

うわー、そんなに単純です。ありがとうございます... – user3613026

+0

別のクエリを組み合わせることは可能ですか? UPDATE 'order' SET paid_ress = '1' WHERE id IN(group_concat(id)) – user3613026

+1

あなたは基本的にあなたが挿入/選択されたフォームを更新クエリを実行することができます..とにかく私は別の適切な質問を掲示し、新しい質問に必要なサンプル – scaisEdge