1

私はちょうどこの質問をしました。2つのテーブル間の結合で最も古いレコードを見つけて、私の質問に対する素晴らしい答えを得ました。問題は、それが私が探していたものではないということです(私のせいです)

次のMySQLテーブルを検討してください

Table: Questions
   ID

Table: Results
   ID 
   Created - When this record was added. 
   Q_ID - A FK to the Question table 

サンプルデータ

Table: Questions
   ID 
   ----
    1
    8
   15
   55

Table: Results
   ID | Created | Q_ID 
   --------------------
    1 |   12:02 |    1 
    2 |   12:03 |   15 
    3 |   12:04 |    8  

次のクエリを使用すると、結果が関連付けられていないすべてのレコードが返されます。すべてのレコードに結果がある場合は、最も古い結果の質問が返されます。

SELECT *
FROM
    questions
    LEFT JOIN results
        ON results.q_id = questions.id
ORDER BY
    ISNULL(results.id) DESC, results.created ASC
LIMIT 1

私が実際に探しているのは、回答されていない質問を探してから、質問を並べ替えて、回答された回数をカウントすることです。答えられない質問が一番上にあるはずです。

4

1 に答える 1

2

これにより、各質問とそれに関連する結果の数がわかります(結果が存在しない場合でも)。それらは、一番上のカウントが最も少ない順に並べられます。

SELECT Questions.ID, COUNT(Results.ID) Result_Count
FROM
    Questions
    LEFT JOIN Results ON Questions.ID = Results.Q_ID
GROUP BY Questions.ID
ORDER BY COUNT(Results.ID)

これはあなたが考えていたものですか?

于 2012-07-24T04:30:09.660 に答える