0

投稿を含むテーブル (edu_posts) があります。フィールド「post_receiver」には通常 user_id が含まれますが、イベント ID (構文: event-ID) が含まれる場合もあり、次のようなステートメントを作成しました。

  SELECT 
    p.*, 
    u.firstname AS post_author_firstname, 
    u.lastname AS post_author_lastname, 
    u3.firstname AS receiver_firstname, 
    u3.lastname AS receiver_lastname, 
    pl.like_author AS user_likes,
    CASE
    WHEN p.post_receiver REGEXP '^[a-z]'
    THEN
    SUBSTRING_INDEX(
      SUBSTRING_INDEX(p.post_receiver, '-', 2), 
      '-', 
      - 1
    )
    END
    AS event_id,
    e.event_name AS event_name
  FROM 
    edu_posts p 
    LEFT JOIN edu_users u ON u.user_id = p.post_author 
    LEFT JOIN edu_users u3 ON u3.user_id = p.post_receiver 
    LEFT JOIN edu_likes pl ON pl.like_entity = p.post_id
    LEFT JOIN edu_events e ON e.event_id = event_id

    AND pl.like_author = 1 
  GROUP BY 
    p.post_id, 
    pl.like_id 
  ORDER BY 
    p.post_date DESC

SELECT ステートメントの CASE とその下、および最後の LEFT JOIN を見てください。

SELECTステートメントで作成した「event_id」からデータを取得できないと考えました。では、EVENT_ID の値に基づいて LEFT JOIN を行うにはどうすればよいでしょうか?

おそらく、この全体の進行状況は複雑すぎるため、post_receiver が event-someID?

あなたの考えは何ですか?前もって感謝します!

4

0 に答える 0