mysql join 两个表选择和记录问题

标签 mysql pdo

我想在我的网页上显示以下信息:
日期 - 个人费用(业务费用)
2012 年 6 月 6 日 - 555.00 美元 (3022.00 美元)
2012 年 6 月 5 日 - 666.00 美元 (usd0.00)
2012 年 6 月 4 日 - 0.00 美元 (444.40 美元)
2012 年 6 月 4 日 - 333.00 美元 (2333.40 美元)

目前我的代码是:

$sql = "SELECT payment_date, sum(price) FROM expense WHERE category=? spender_id=? GROUP BY payment_date";
    $q = $conn->prepare($sql);
    $result = $q->execute(array("Personal", $user_id));
    while($r = $q->fetch(PDO::FETCH_ASSOC)){
        $payment_date_db = $r['payment_date'];
        $payment_date_db2 = date("d-F-Y", strtotime($payment_date_db));
        $price_db = $r['sum(price)'];

        echo $payment_date_db2 . " - " . $money_currency . $price_db . "<br />";
    }

我不知道如何选择和显示业务费用记录并将其显示在总括标志()中。有什么想法吗?

最佳答案

您确实应该提供有关表架构的更多详细信息,但我认为我可以从您的查询中推断出它是这样的:

费用( payment_id [PK]、spender_id [FK]、类别 [FK??]、价格、 payment_date)

其中类别字段包含“个人”或“费用”。

因此,如果您想获取特定消费者在每个日期的个人和企业费用总和,请尝试以下查询:

SELECT 
    payment_date,
    SUM(IF(category = 'Personal', price, 0)) AS personal_expense_total,
    SUM(IF(category = 'Business', price, 0)) AS business_expense_total
FROM 
    expense
WHERE 
    spender_id = ?
GROUP BY 
    payment_date

因此,在 PHP 代码中,您可以执行以下操作:

$sql = '
    SELECT
        payment_date,
        SUM(IF(category = "Personal", price, 0)) AS personal_expense_total,
        SUM(IF(category = "Business", price, 0)) AS business_expense_total
    FROM expense
    WHERE spender_id = :spender_id
    GROUP BY payment_date';
$stmt = $conn->prepare($sql);
$stmt->bindParam(':spender_id', $user_id, PDO::PARAM_INT); // Assuming $user_id contains an integer
$stmt->execute();

while($r = $stmt->fetch(PDO::FETCH_ASSOC))
{
    $date = date('d-F-Y', strtotime($r['payment_date']));
    $personal = 'usd' . number_format($r['personal_expense_total'], 2);
    $business = 'usd' . number_format($r['business_expense_total'], 2);

    echo "$date - $personal - ($business)<br />";
}

关于mysql join 两个表选择和记录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10969737/

相关文章:

php - 模型代码点火器上的查询数组

mysql - SQL - 带有修订历史记录的注释系统

php - pdo 准备插入失败

php - 从搜索框中获取内容在数据库中查找它

PHP PDO fatal error

php - 操作 'like' 与 PDO bindValue() 的排序规则非法混合

mySQL 查询中的 PHP 整型变量

sql - 删除一个表中所有未被另一个表引用的记录

php - PDO - 搜索是查询整个术语而不是单独查询每个术语

php - 检查 MySQL 中的日期范围冲突