3个表包含类似于like或+ 1的方式

时间:2013-07-20 17:37:19

标签: php mysql

我有2张桌子

网页

page_id   post_id   pid  
 3421      2345      1357 
 3421      4567      2468
 3421      7891      1357

的USR

 pid      fname    lname 
 1357     john     bravo
 2468     ray      mexy

使用以下声明

$result = mysql_query("SELECT usrs.*,pages.* FROM usrs INNER JOIN pages ON 

 usrs.pid = pages.pid WHERE pages.page_id = '$pageid'"); // $pageid = 3421

它以数组的形式给出page_id = 3421的所有匹配。

这样的事情会回应结果

     while($row = mysql_fetch_array($result))
        echo $row['post_id'] . " " . $row['fname'] . " " . $row['lname'];

o/p is   2345 john bravo 
         4567 ray  mexy
         7891 john bravo

现在真正的问题是,在这种情况下,我还有另一张表可供使用

考虑表3:total_likes

   post_id   pid
    2345     3214
    2345     4123
    1245     4567
    2345     2367

用户可以选择喜欢它并且当用户点击时like button hes pid添加了post_id,现在我想要特定{{1}的喜欢数量}这是特定post_id

的行数

我希望输出是这样的

post_id.

我不确定它是否可能,因为第三个表为post_id保存了更多值。它就像一个指向数组 2345 john bravo 45 likes 4567 ray mexy 32 likes 1357 john bravo 20 likes 的值的数组。

1 个答案:

答案 0 :(得分:1)

您可以有一个额外的子查询,分别计算每个post_id的记录数。

SELECT  a.*, 
        b.*
        c.likes, c.IsExist
FROM    pages a
        INNER JOIN usrs b
            ON a.pid = b.pid
        LEFT JOIN
        (
            SELECT  post_id, 
                    COUNT(*) likes,
                    IF(SUM(pid = 1357) > 0, 'yes', 'no') IsExist
            FROM    total_likes
            GROUP   BY post_id
        ) c ON b.post_id = c.post_id
WHERE   a.page_id = 3421