代码之家  ›  专栏  ›  技术社区  ›  Jean

来自不同sql表的个性化php输出

  •  0
  • Jean  · 技术社区  · 8 年前

    我正在创建一个通知页面,其中 显示4种类型的通知

    1) someone liked your post
    2) someone shared your post
    3) someone added you as a friend
    4) someone commented your post
    

    我已经得到了每条语句的sql代码,但我仍然不知道如何将所有内容混合在一个语句中 while($a=sql_array()){} 循环,我知道我应该使用UNION和ORDER by date,但如何为显示的每种类型的通知发布个性化输出

    DESIRED OUTPUT
    
    A liked your page
    B comment your post
    C liked your page
    D comment your post
    E added you as a friend
    F liked your page
    G comment your post
    H shared your post
    I added you as a friend
    J shared your post
    K shared your post
    L liked your page
    M added you as a friend
    N shared your post
    O added you as a friend
    P liked your page
    Q comment your post
    R added you as a friend
    S added you as a friend
    T comment your post
    D liked your page
    

    我有6张桌子

    table_users
    table_posts 
    table_likes
    table_shares
    table_comments
    table_community
    

    每种类型的通知都遵循相同的模式

     SELECT u.`name`, p.post, p.date as OrderDate
      FROM likes (next shares, next, comments, community)
        LEFT JOIN Users as u on likes.id_liker=u.id_user
        LEFT JOIN Users as v on likes.liked_user_id=v.id_user
        LEFT JOIN Posts as p on likes.liked_post_id=p.id_post
             WHERE likes.liked_user_id=3
    

    所以我用 UNION 订购人 OrderDate ,它们检索结果,但没有个性化的通知类型。我想总结一下,因为这是一个巨大的问题。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Sergio Tulentsev    8 年前

    那么您想以不同的方式设置这些事件的格式?这就像在输出中添加鉴别器字段一样简单

    SELECT "like", u.`name`, p.post, p.date as OrderDate FROM likes ...
    UNION
    SELECT "share", u.`name`, p.post, p.date as OrderDate FROM shares ...
    

    现在,在应用程序中,您可以根据第一列的值选择不同的格式。