2013-11-14 6 views
0

Мои коды sql выполняются, но я не знаю, как получить разницу между buy_request total_qty и buy_order qty.Получите разницу в двух столбцах в двух разных таблицах?

Таблица purchase_order

counter | qty |  
---------------   
100001 | 10 | 
100001 | 10 | 
100001 | 10 | 
100004 | 30 | 

Таблица Purchase_Request

counter | total_qty | 
--------------------- 
100001 |  50 | 
100002 |  100 | 
100003 |  50 | 
100004 |  70 | 

Я хочу, чтобы кодировать так же, как это, но я не знаю, как смешивать его в своих кодов.

a.total_qty-b.qty as balance 

И это мои коды

<?php 
    $mysqli = new mysqli("localhost", "root", "", "test"); 

     $result = $mysqli->query(" 
     select a.counter,a.total_qty from purchase_request a inner join purchase_order b on a.counter= b.counter group by a.counter 
     "); 
     echo'<table id="tfhover" cellspacing="0" class="tablesorter" style="text-transform:uppercase;" border="1px"> 
      <thead> 
      <tr> 
      <th></th> 
     <th>counter</th> 
     <th>QTY</th> 
     <th>balance</th> 
      </tr> 
      </thead>'; 
      echo'<tbody>'; 
     $i=1; 
    while($row = $result->fetch_assoc()){ 
     echo'<tr> 
       <td>'.$i++.'</td> 
       <td>'.$row['counter'].'</td> 
       <td>'.$row['total_qty'].'</td> 
       <td>'.$row['balance'].'</td> 
      </tr>'; 
      } 
     echo "</tbody></table>"; 

    ?> 

ответ

0

Пробовали ли вы это?

select a.counter, 
      a.total_qty, 
      a.total_qty - b.qty balance 
     from (select counter, 
        sum(total_qty) total_qty 
       form purchase_request 
      group by counter) a 
inner join (select counter, 
        sum(qty) qty 
       from purchase_order 
      group by counter) b 
     on a.counter= b.counter 
    group by a.counter 

Edit: Я получил его, что вам нужно будет агрегировать свои объемы, а затем сделать математику

+0

он работает, но баланс 40, мне нужно, чтобы получить сумму 3 100001 счетчик qty и минус до total_qty. Я должен получить 20 в качестве баланса – user2991590

+0

Я обновил запрос – mucio

+0

он становится хуже, $ row ['total_qty'] потерян, а остаток 100001 равен 120:/ – user2991590

-1
select a.counter, 
      a.total_qty, 
      sum(a.total_qty) - sum(b.qty) as balance 
     from purchase_request a 
left inner join purchase_order b 
     on a.counter= b.counter 
    group by a.counter 
+0

счетчик 100001 баланс = 120, который является неправильным, но счетчик 100004 = 40, который является правильным. Почему это? но это мой ответ a.total_qty - sum (b.qty) как баланс, и оба counter = правильны. Если это правильно? – user2991590

+0

это даст вам декартовое соединение между Purchase_Order и purchase_request, когда есть несколько строк с одним и тем же счетчиком – mucio

Смежные вопросы