php - 合并两个日志类型特征查询的返回结果

标签 php mysql multidimensional-array pdo

信息

我目前正在制作一个历史记录/日志页面,以显示用户在我的网站上的付款历史记录。

这两个表分别是taskspayouts

tasks 是一个包含用户可以完成并赚钱的任务的表格。 我使用的返回列是 tasks.titletasks.paymenttasks.timestamp

payouts 是一个表格,用于在用户支付收入时保存信息。 我使用的返回列是 payouts.processorpayouts.amountpayouts.timestamp

问题

我需要运行两个查询,合并它们(可能与类型字段一起使用,这样当我在输出上使用 foreach 时,我可以轻松地以不同方式显示它们),然后按时间戳 DESC 排序。

尝试

我唯一的尝试没有结果,我所做的只是运行两个查询,然后使用 array_push,它没有向数组末尾添加任何内容。

问题

在添加名为 LOG_TYPE 的字段时合并两个查询结果的最佳方法是什么,所以在输出时我可以做这样的事情

foreach($data as $row){
    if($row['LOG_TYPE'] == 1){
        // Display Payout
    }    else    {
        // Display Task
    }
}

结论

任何问题都将尽快得到解答,任何编辑内容都将显示在下方。谢谢。

编辑

根据要求,这是我正在使用的两个查询。

    $STH = $this->database->prepare('SELECT * FROM tasks WHERE completed_by = :userid  ORDER BY timestamp DESC');
    $STH->execute(array(':userid' => $user));
    $data = $STH->fetchAll();

    $STH = $this->database->prepare('SELECT * FROM payouts WHERE user = :userid ');
    $STH->execute(array(':userid' => $user));
    $payouts = $STH->fetchAll();

最佳答案

不要使用 *.基本上你想要这个,它会给你 4 列(log_type、field1、field2、timestamp):

SELECT 1 as log_type, tasks.title as field1 , tasks.payment AS field2, tasks.timestamp
FROM tasks
WHERE completed_by = 'foo'
UNION
SELECT 2, payouts.processor, payouts.amouny, payouts.timestamp
FROM payouts
WHERE user = 'bar'
ORDER BY timestamp DESC';

试试这个

$STH = $this->database->prepare('SELECT 1 as log_type, tasks.title as field1 , tasks.payment AS field2, tasks.timestamp
                                 FROM tasks
                                 WHERE completed_by = :userid
                                 UNION
                                 SELECT 2, payouts.processor, payouts.amount and payouts.timestamp
                                 FROM payouts
                                 WHERE user = :userid
                                 ORDER BY timestamp DESC');
$STH->execute(array(':userid' => $user));
$payouts = $STH->fetchAll();

关于php - 合并两个日志类型特征查询的返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19977695/

相关文章:

MYSQL查询: Select 1 rows photo from table for each album

php - 页面加载错误codeigniter

php - 我如何在 php 中打印对象值

php - 使用CodeIgniter和php的搜索功能

php - 试图在 sql 查询中获取非对象的属性

c++ - 在保留列的同时对二维 vector 进行排序

javascript - 如何分别遍历嵌套数组项

c - 下面如何进行多维数组的指针运算?

php - Google 通知 channel 允许的最长过期时间是多少?

php - 使用 PHP imap 获取电子邮件会弄乱内联嵌入式图像