1

2つのテーブルがあります。「質問」:質問のリスト、「結果」ユーザーはこれらの質問に結果を出します。

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  

次の情報を取得するクエリ(または2つ)を探しています。

  • 結果が関連付けられていない質問。
  • すべての質問に結果がある場合は、結果が最も古い質問を見つけます。

このクエリはquestion.id=55を返す必要があります。これは、結果がない唯一の質問であるためです。question.id = 55が存在しなかった場合、質問の結果が最も古いため、question.id=1が返されます。

4

2 に答える 2

3

LEFT JOIN2 つのテーブルがある場合は、句を使用してORDER BY必要なことを行うことができます。

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

これにより、結果のない質問がリストの一番上に配置され、その後に結果のあるすべての質問のリストが続きます (「古い質問が最初」の順序で)。はLIMIT 1、必要なものと一致する必要がある上位の結果のみを表示します。

于 2012-07-24T03:51:08.453 に答える
0

1- 結果が関連付けられていない質問

select q.qid from questions q where q.qid not in ( select r.qid from result r )

2- 最も古い結果を持つ質問を見つける

select min(r.createdon) from result r
于 2012-07-24T03:55:28.063 に答える