2015-12-12 27 views
0

我需要一些帮助。 我即将创建一个小型电子商店,我想为每个用户添加购物历史记录。显示购买历史

我有这个,但它不像我想要的那样工作。

$sql="SELECT * FROM transactions INNER JOIN cds ON transactions.cdCode=cds.code WHERE usrId='$userId' ORDER BY transactionId"; 
$result=mysqli_query($conn,$sql); 
if (mysqli_num_rows($result)==0) 
    echo "No purchases"; 
echo "<table>"; 

while($row=mysqli_fetch_array($result)) 
{ 
    echo "<tr><td>".$row['transactionId']."</td>"; 
    echo "<td>".$row['name']."</td>"; 
    echo "<td>".$row['cdQuantity']."</td>"; 
    echo "<td>".$row['price']."</td>"; 
    echo "<td>".$row['tDate']."</td>"; 
    echo "<td>".$row['status']."</td></tr>"; 
} 
echo "</table>"; 

SQL文件:

CREATE TABLE transactions (
    transactionId varchar(255) NOT NULL, 
    usrId INT NOT NULL, 
    cdCode varchar(35), 
    cdQuantity int, 
    tDate text, 
    status text, 
    PRIMARY KEY(transactionId,usrId,cdCode), 
    FOREIGN KEY(usrId) REFERENCES users(userId), 
    FOREIGN KEY(cdCode) REFERENCES cds(code) 
); 

它打印出这样的事情:

> purchaseId cdName quantity price date status 
> 1e963a1d CdName 1 price 2015-12-12:14:08 Pending 
> 1e963a1d CdName  1 price 2015-12-12:14:08 Pending 
> 1e963a1d CdName  1 price 2015-12-12:14:08 Pending 
> 1e963a1d CdName 1 price 2015-12-12:14:08 Pending 
> 1f2b8183 CdName 1 price 2015-12-12:14:20 Pending 
> 1f2b8183 CdName  1 price 2015-12-12:14:20 Pending 
> 1f2b8183 CdName  1 price 2015-12-12:14:20 Pending 

我想组由purchaseId不同表中的采购,以便计算的总成本每一次购物。

+0

我很困惑... cdCode或cdName现有查询? – Vixed

回答

0

可以使用沿着GROUP BY与像

SELECT t.*, SUM(t.price) as total_price 
FROM transactions t 
INNER JOIN cds c ON t.cdCode = c.code 
WHERE t.usrId = '$userId' 
GROUP BY t.purchaseId 
ORDER BY transactionId;