2011-03-17 31 views
0
$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 
    "; 

這就是我正在使用新表。我希望它能顯示ideaTitle,每個ideaTitle的所有反饋(這是上面得到的),然後顯示我們在下面的sql代碼中得到的總票數(布爾值爲1 & 0)。我只是把它們以正確的方式組合起來。把它分成兩個單獨的sql命令會更好嗎?3表加入其中除了

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 } 
+0

在第二個查詢中,爲什麼在p.Ideasummary而不是p.ideatitle上分組? – JNK 2011-03-17 20:22:57

+0

創意表的主要關鍵是什麼?這是'想法'嗎? – 2011-03-17 20:26:16

+0

@Mark - 是的,它是@JNK可能是我的錯誤 - 他們總是相同的 – 2011-03-17 20:54:38

回答

1

我會做這兩個單獨的查詢。你可以在一個查詢中完成,但這樣做沒有真正的目的。

如果你真的想嘗試做在一個查詢它可能會是這個樣子:

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 

但是我沒有看到這個產品的優勢,我看到幾個缺點。

+0

決定去2條語句路線,但我不知道如何連接兩個 - 任何想法? – 2011-03-17 21:23:49