データベース: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