$sql_select = "SELECT p.ideaTitle, f.feedback, f.contact
FROM ideas p
RIGHT JOIN feedback f ON f.ideaSlug = p.ideaSlug
ORDER BY p.ideaDateTime, f.dateTime
";
这就是我在新 table 上使用的内容。我希望它显示 ideaTitle、每个 ideaTitle 的所有反馈(上面得到的),然后是我们在下面的 sql 代码中获得的投票总数( bool 值 1 和 0)。我只是以正确的方式将它们结合在一起,度过了一段愉快的时光。将其分成 2 个单独的 sql 命令会更好吗?
SELECT "p.ideaTitle,
SUM(CASE WHEN v.vote = '1' THEN 1 ELSE 0 END) AS yesCount,
SUM(CASE WHEN v.vote = '0' THEN 1 ELSE 0 END) AS noCount
FROM ideas p
LEFT JOIN votes v ON v.ideaSlug = p.ideaSlug
GROUP BY p.ideaSummary
ORDER BY yesCount DESC
LIMIT 20";
我用来显示数据的当前代码。
$result = mysql_query($sql_select,$link) or die("Insertion Failed:" . mysql_error());
$x=0;
while ($row = mysql_fetch_array($result)) {
if ($row['ideaTitle'] != $previousTitle) {
?> <h3> <?php echo stripslashes($row['ideaTitle']); ?> </h3>
<h4> Yes: <?php // echo $number of yes votes; ?> </h4>
<h4> No: <?php // echo $number of no votes; ?></h4>
<?php } ?>
<blockquote>
<p><em> <?php echo stripslashes($row['feedback']); ?> </em> </p></blockquote>
<?php
$previousTitle = $row['ideaTitle']; ?>
<?php }
最佳答案
我会将其作为两个单独的查询来执行。您可以在一个查询中完成此操作,但这样做没有真正的目的。
如果您真的想尝试在一个查询中完成它,它可能看起来像这样:
SELECT p.ideaTitle, f.feedback, f.contact, p2.yesCount, p2.noCount
FROM ideas p
LEFT JOIN feedback f ON f.ideaSlug = p.ideaSlug
LEFT JOIN (
SELECT
p.ideaSlug,
SUM(CASE WHEN v.vote = '1' THEN 1 ELSE 0 END) AS yesCount,
SUM(CASE WHEN v.vote = '0' THEN 1 ELSE 0 END) AS noCount
FROM ideas p
LEFT JOIN votes v ON v.ideaSlug = p.ideaSlug
GROUP BY p.ideaSlug
) p2
ON p.ideaSlug = p2.ideaSlug
但是我没有看到这样做有任何好处,而且我看到了一些缺点。
关于php - 3 表连接并在其中添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5344711/