0

アップデート:

以下は私の質問です:

   $questionquery = "
SELECT q.QuestionId, q.QuestionContent, o.OptionType, q.NoofAnswers, GROUP_CONCAT(an.Answer ORDER BY an.Answer SEPARATOR ' ') AS Answer, r.ReplyType, 
       q.QuestionMarks 
  FROM Answer an 
  INNER JOIN Question q ON q.AnswerId = an.AnswerId
  JOIN Reply r ON q.ReplyId = r.ReplyId 
  JOIN Option_Table o ON q.OptionId = o.OptionId 
      WHERE ".implode(" AND ", array_fill(0, $numTerms, "q.QuestionContent LIKE ?"))."
      GROUP BY q.QuestionId, q.SessionId, q.QuestionContent, o.OptionType, q.NoofAnswers, Answer, r.ReplyType, q.QuestionMarks
      ORDER BY ".implode(", ", array_fill(0, $numTerms, "IF(q.QuestionContent LIKE ?, 1, 0) DESC"))."
    ";

上記のクエリは文字列の検索を提供し、「質問」列の下にその文字列を含む行を出力します。

アプリケーションでアクセスできるURLがあります。アプリケーションを使用するには、以下の手順に従ってください。

  • ステップ1:アプリケーションを開くと、ページに緑色のプラスボタンが表示され、それをクリックすると、モーダルウィンドウが表示されます。
  • ステップ2:モーダルウィンドウに検索バーがあり、「AAA」と入力して検索を送信すると、一連の行が表示されます。

注意深く読んでいるとわかるように、各列にまったく同じ内容(同じ質問、回答、マーク、返信数など)があるように、正確に重複している行がいくつかあります。

これは私が取り除きたいものです。重複する行を表示したくないのですが、重複する行を出力しないように、それらの行の1つを表示するだけです。何を変更する必要がありますか?

4

3 に答える 3

1

編集:あなたの質問への変更に続いて


あなたのサンプルデータに基づいて、それは単にこれです..

SELECT
  `Question`,
  `Answer`,
  `Number of Marks`
FROM
  yourQuery
GROUP BY
  `Question`,
  `Answer`,
  `Number of Marks`

しかし、それはあなたが私たちに言っていない何か他のものがあるのではないかと私に思わせますか?

于 2012-07-12T17:05:32.870 に答える
0

重複した行を表示しないようにするには、次のように DISTINCT 句を追加するだけです。

$questionquery = "
SELECT DISTINCT q.QuestionId, q.QuestionContent, o.OptionType, q.NoofAnswers,
    GROUP_CONCAT(an.Answer ORDER BY an.Answer SEPARATOR ' ') AS Answer, r.ReplyType, 
    q.QuestionMarks 
FROM Answer an 
INNER JOIN Question q ON q.AnswerId = an.AnswerId
JOIN Reply r ON q.ReplyId = r.ReplyId 
JOIN Option_Table o ON q.OptionId = o.OptionId 
WHERE ".implode(" AND ", array_fill(0, $numTerms, "q.QuestionContent LIKE ?"))."
GROUP BY q.QuestionId, q.SessionId, q.QuestionContent, o.OptionType, q.NoofAnswers, Answer, r.ReplyType, q.QuestionMarks
ORDER BY ".implode(", ", array_fill(0, $numTerms, "IF(q.QuestionContent LIKE ?, 1, 0) DESC"))."
";
于 2012-07-12T18:02:05.697 に答える
0

q.SessionId と Answer でグループ化する特定の理由はありますか? 選択していないフィールド (q.SessionID) でグループ化し、集計関数の結果であるため Answer によるグループ化は間違っているように聞こえる場合、結果セットに重複する行があると予想されます。

于 2012-07-12T18:14:29.460 に答える