0

このリンクのようなデータベース構造を使用してアクティビティ フィードを書き込もうとしています ソーシャル ネットワークでアクティビティ ストリームを実装する方法 しかし、データを取得するための MySQL コマンドの書き方がわかりません。具体的には、アクティビティ テーブルには、typeそれがどの種類のアクティビティであるかのsource_id識別と、そのタイプのアクティビティの主キーの識別があります。結合構文を使用してすべての詳細を取得する方法がわかりませんsource_id

        SELECT 
            activity.user_id, activity.type, activity.source_id, activity.time, users.username, act1.detail, act2.detail
        FROM activity JOIN users JOIN act1
        ON activity.user_id = users.uid
        AND activity.source_id = act1.sid
        WHERE 
            activity.userTo = :uid 

上記のコマンドを使用すると、act1 が source_id の主キーを持つ行のみを取得できますが、タイプ 2 (act2) である可能性があります。さらに、コマンドに act2 を含めていません。必要な詳細を取得するには、コマンドをどのように記述する必要がありますか? それとも、まったく別の方法で行う必要がありますか? ありがとう!

4

1 に答える 1

0

結合するにはact1、type1 または type2 の可能性があるため、 LEFT JOINact2を使用しました。これを試してください。source_id

SELECT 
    activity.user_id, 
    activity.type, 
    activity.source_id, 
    activity.time, 
    users.username, 
    act1.detail, 
    act2.detail
FROM 
    activity 
JOIN users 
    ON activity.user_id = users.uid
LEFT JOIN act1
    ON activity.source_id = act1.sid
LEFT JOIN act2
    ON activity.source_id = act2.sid
WHERE 
    activity.userTo = :uid
于 2013-06-10T07:06:36.207 に答える