2011-03-17 6 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コードで取得するVotes(ブール値1の両方)の合計数を指定します。私はちょうど正しい方法でそれらを結合する時間の地獄を持っている。これを2つの別々の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

2番目のクエリでは、p.idatummleではなくp.Ideasummaryでグループ化しているのはなぜですか? – JNK

+0

アイデアテーブルの主キーは何ですか?それは 'ideaSlug'ですか? –

+0

@マーク - はいそれは@JNKおそらく私の部分のエラー - 彼らはいつも同じです –

答えて

1

私はこれを2つの別々のクエリとして実行します。あなたは1つのクエリでそれを行うことができますが、実際の目的はありません。

あなた本当には、それはおそらくこのようなものになります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つのステートメントルートに行くことに決めましたが、私は2つのアイデアを結ぶ方法を理解できません。 –

関連する問題