Сгруппировать похожие данные из нескольких таблиц и добавить результат

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

$clientid = 24;

$query = "SELECT items.itemid, prices.priceid FROM items
JOIN prices ON items.itemid = prices.itemid
WHERE items.clientid = '$clientid'";$result =  $db_connect -> query($query);
$row_cnt = $result -> num_rows;

echo $joinrow_cnt."<br/><br/><br/>";

while($assocresult = mysqli_fetch_assoc($result)){
$price = $assocresult['priceid'];
$item = $assocresult['itemid'];
$realprice = ($price/100)*80;        //after 80% discount
echo "ItemId: ".$item." Price : " .$price." real price: " .$realprice."<br/>";
}

Пока я получаю:

ItemId: 1 Price : 100 real price: 80
ItemId: 3 Price : 25 real price: 20
ItemId: 1 Price : 100 real price: 80
ItemId: 5 Price : 200 real price: 160
ItemId: 3 Price : 25 real price: 20
ItemId: 1 Price : 100 real price: 80

Посмотрите, как ItemId 1 и 3 повторяются. Есть много таких строк, где идентификаторы элементов повторяются.

Я хочу, чтобы вывод был как:

ItemId: 1x3 Price: 100 real price = 80x3=240
ItemId: 3x2 Price: 25 real price = 20x2=50
ItemId: 5   Price: 200 real price: 160 //since this item is listed only once.

Пожалуйста помоги. Большое спасибо!!

0

Решение

Вы можете получить все items а также prices данные и сопоставить их с WHEREзатем используйте GROUP BY собрать дубликаты в один ряд. С COUNT(..) Вы можете получить количество строк для каждого элемента.

Это должно сделать трюк:

SELECT
COUNT(items.itemid) as cnt,
items.itemid,
prices.priceid
FROM items, prices
WHERE
items.itemid = prices.itemid
AND
items.clientid = '$clientid'
GROUP BY items.itemid
1

Другие решения

Проверьте решение, как показано ниже:

$clientid = 24;

$query = "SELECT items.itemid, prices.priceid, count(items.itemid) as itemcnt FROM items
JOIN prices ON items.itemid = prices.itemid
WHERE items.clientid = '$clientid' group by items.itemid";$result =  $db_connect -> query($query);
$row_cnt = $result -> num_rows;

echo $row_cnt."<br/><br/><br/>";

while($assocresult = mysqli_fetch_assoc($result)){
$price = $assocresult['priceid'];
$item = $assocresult['itemid'];
$itemcnt = $assocresult['itemcnt'];
$realprice = ($price/100)*80;        //after 80% discount
echo "ItemId: ".$item."x".$itemcnt." Price: " .$price." real price = " .$realprice."x".$itemcnt."=".($realprice*$itemcnt)."<br/>";
}

Я не получаю никакой ошибки, поскольку вы попадаете в строку 10. Какова ценность $db_connect в вашем коде?

Дай мне знать. Благодарю вас!

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector