2015-01-27 3 views
3

У меня есть эти таблицы:РЕГИСТРИРУЙТЕСЬ тот же столбец в той же таблице - MYSQL

ТАБЛИЦА addonlist_final

enter image description here

TABLE аддоны

enter image description here

Во-первых, Мне нужно JOIN тот же addon_id, поэтому я могу получить все необходимые детали (которые я уже сделал). Затем я хочу, чтобы JOINcolumn с тем же идентификатором (addon_id) в table, затем добавьте количество друг другу.

До сих пор у меня есть этот код:

<?php 

include("conn.php"); 

echo "<table border='1' >"; 
echo "<tr>"; 
    echo "<th>Description</th>"; 
    echo "<th>Price</th>"; 
    echo "<th>Qty</th>"; 
    echo "<th>Total Cost</th>"; 
echo "</tr>"; 
$totaldue = 0; 
$currentaddons = mysql_query("SELECT a.*, af.* 
          FROM addons AS a, addonlist_final AS af 
          WHERE a.addon_id = af.faddon_id and af.ftransac_id='2685' 
          ORDER BY af.timef DESC 
          "); 

while($rows = mysql_fetch_assoc($currentaddons)){ 
    $desc = $rows['description']; 
    $price = $rows['price']; 
    $qty = $rows['quantity']; 
    $totalcost = $price * $qty; 
    $totaldue += $price * $qty; 
     echo "<tr>"; 
      echo "<td>$desc</td>"; 
      echo "<td>$price</td>"; 
      echo "<td>$qty</td>"; 
      echo "<td>$totalcost</td>"; 
     echo "</tr>"; 
} 

echo "</table>"; 

echo "<h3>Total Due: ".number_format($totaldue)."</h3>"; 

?> 

Это показывает мне это:

enter image description here

То, что я хочу, чтобы показать это:

enter image description here

Это возможно только с одним запросом? Заранее спасибо :)

+1

Похоже, вы хотите() 'агрегатной функции, а не другой' JOIN' мне 'SUM: http://dev.mysql.com /doc/refman/5.0/en/group-by-functions.html#function_sum – CD001

+0

Поскольку функции 'mysql_ *' в стороне устарели - не используйте их: http://stackoverflow.com/questions/12859942/why- shouldnt-i-use-mysql-functions-in-php – CD001

+0

@ CD001, да, я все еще практикую «PDO». Итак, 'mysql_ *' - мое выражение. –

ответ

4

Вы uave использовать group by

SELECT a.description, sum(af.quantity) as quantity,price 
FROM addons AS a, addonlist_final AS af 
WHERE a.addon_id = af.faddon_id and af.ftransac_id='2685' 
group by a.description 
ORDER BY af.timef DESC 
+2

«group by» - правильный ответ - но я предпочел бы группировать по полю int вместо varchar (например, 'group by a.addon_id' вместо' group by a.description') –

+2

Тогда вы не можете выбрать описание на других dbms, таких как oracle, вот почему я сгруппировал по 'a.description' – Jens

+2

true - я не думал о других dbms, потому что этот вопрос явно о mysql, но в других dbms я по крайней мере буду включать addon_id (например, 'group by a.addon_id, a.description'), поскольку описание возможно (по крайней мере, в дизайне db) не уникально –

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