0

データベース:MySql 5.5.3

テーブルにtype列があります。「E」のtopic場合type、「イベント」テーブルにエントリが存在することを意味し、「TOPIC_HAS_EVENT」テーブルにクエリを実行して、EVENTテーブルからさらにいくつかの列を取得する必要があります。同様に、Typeが「P」の場合、「Poll Table」にエントリが存在することを意味し、「TOPIC_HAS_POLL」テーブルにクエリを実行して、POLLテーブルからいくつかの列を取得する必要があります。タイプがnullの場合は、通常どおりクエリを実行して、コメントテーブルからすべての行とそのコメントを取得する必要があります。

最終結果には、すべてのタイプ('E'、'P'、NULL)のすべてのトピック行と、他のテーブルの特定の列が含まれている必要があります。それが簡単に達成できる場合は、以下に説明するように、さらにいくつかの列を追加する必要があります

より複雑

type ='E'にいくつかの行がある場合、EVENT_HAS_USERテーブルからユーザー情報などの行をさらに取得する必要があります。

関係

Each Topic has Many Comments
Each Topic has One Event
Each Topic has One Poll

EVENT ManyTOMany User

これまでに作成されたクエリ。'type'列を追加する必要があります。手伝ってください。

SELECT DISTINCT
        T.TOPIC_GUID, COUNT(*) TOTAL_COMMENTS
    FROM
        CIRCLE C, CIRCLE_HAS_USER CHU, CIRCLE_HAS_TOPIC CHT, TOPIC T
    LEFT JOIN TOPIC_COMMENT TC ON T.TOPIC_GUID = TC.TOPIC_GUID
    WHERE
        CHT.CIRCLE_GUID = C.CIRCLE_GUID
            AND T.TOPIC_GUID < 400000 -- ?
            AND CHT.TOPIC_GUID = T.TOPIC_GUID
            AND CHU.CIRCLE_GUID = C.CIRCLE_GUID
            AND CHU.USER_GUID = 1
            AND CHU.STATUS = 'A'
    GROUP BY T.TOPIC_GUID
    ORDER BY T.LAST_UPDATED_TIMESTAMP DESC
    LIMIT 10 
4

1 に答える 1

1

これを試して:

select (case when type = 'type1' then (select field from table1) else (select field from table2) end) as a from table;
于 2012-10-01T02:03:16.383 に答える