我想弄清楚我在哪里出错了。我正在使用不同的Where语句从同一个表中加入多个select语句,其中一个选择也是一个连接。我试图使用工会,但我似乎失去了一些东西,我不知道它是什么。任何帮助都会很棒。下面是我的代码:Mysql union所有选择问题
SET @LASTQTR:=IF((QUARTER(CURDATE())-1) = 0, 4, QUARTER(CURDATE())-1);
SET @YR:=IF(@LASTQTR = 4, YEAR(NOW())-1, YEAR(NOW()));
(SELECT COUNT(r.id) AS total, CONCAT(m1.first_name,' ', m1.last_name) AS fromName FROM Referrals AS r JOIN Members AS m1 ON m1.id=r.from_id WHERE QUARTER(rdate) = @LASTQTR AND YEAR(rdate) = @YR GROUP BY r.from_id)
UNION ALL
(SELECT COUNT(id) AS external FROM Referrals WHERE QUARTER(rdate) = @LASTQTR AND YEAR(rdate) = @YR AND rtype=1 GROUP BY from_id)
UNION ALL
(SELECT COUNT(id) AS internal FROM Referrals WHERE QUARTER(rdate) = @LASTQTR AND YEAR(rdate) = @YR AND rtype=2 GROUP BY from_id)
ORDER BY total DESC LIMIT 10;
我要寻找从该查询使用导致while循环,像这样的最终结果是:
while ($re = $q8->fetch(PDO::FETCH_ASSOC)) {
echo'<tr>
<td style="width:40%;">'.$re['fromName'].'</td>
<td class="text-right">'.$re['external'].'</td>
<td class="text-right">'.$re['internal'].'</td>
<td class="text-right">'.$re['total'].'</td>
</tr>';
}
使用上面的这个问题是当循环遍历结果时,它将每个sel ect语句作为while循环中的新行。我认为使用Union将会返回每行所有三个选择的结果。 –
请参阅我对原始问题的编辑 –