所以我有5个独立的select语句。将select语句与php结合并按时间排序
<?
$stmt=$db->prepare('SELECT * FROM table1 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
$stmt=$db->prepare('SELECT * FROM table2 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
$stmt=$db->prepare('SELECT * FROM table3 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
$stmt=$db->prepare('SELECT * FROM table4 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
$stmt=$db->prepare('SELECT * FROM table5 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
?>
我需要所有的结果结合起来,组织所有基于时间的最新时间第一的结果,然后在此基础上表中的结果是从哪里来的回显消息。
注意每个表都有一个行时间。
实施例的结果:
<p>This result was posted 5 minutes ago and came from table 2</p>
<p>This result was posted 10 minutes ago and came from table 5</p>
<p>This result was posted 1 day 6 hours ago and came from table 1</p>
<p>This result was posted 2 weeks ago and came from table 3</p>
<p>This result was posted 3 weeks ago and came from table 1</p>
更新:
选择*是绝对的要求,这就是为什么用mysql不是一个可行的解决方案。 Mysql无法进行全表连接,而是通过执行表的交叉连接来反映实践。但是,如果你了解交叉连接的缺点,那么当我说某些表将返回数以千计的用户结果时,就会明白,由于交叉连接会为每个条目创建无数个重复行,因此交叉连接不可行,进行交叉连接时,条目会产生数百万和数千万行。 PHP似乎是唯一的解决方案。
我需要一个解决方案,将使用php来结合选择和排序它们的时间不是一个MySQL解决方案。
我仍然希望有一个有效的解决方案,实际上解决了我问的问题。 ,它使用PHP来排序值和回声结果,而不是使用sql来完成。 – Bruce