php - 3 表连接并在其中添加

标签 php mysql sql

    $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/

相关文章:

php - mysql列的月明智总和

javascript - 列出选定类别和价格范围内的产品

sql - 查找表中每一行的顶级父级 [SQL Server 2008]

mysql - 我应该为常见的数据库字段(如 active 、createdAt 等)制作单独的表吗

sql - 数据库日期时间值冲突

php - 如何合并多个未知长度的平面数组,转置它们,然后形成一维数组?

php - 有什么脚本可以做完整的远程备份吗?

php - Apple 推送通知中的表情符号支持

mysql - Rails - 连接表删除

c# - 在 for 循环中使用 INSERT 语句仅接受第一条记录