Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何内部联接三个表并获得计数_Php_Mysql - Fatal编程技术网

Php 如何内部联接三个表并获得计数

Php 如何内部联接三个表并获得计数,php,mysql,Php,Mysql,我有三张桌子: members (id, name, surname, usr_img) user_uploads (imgID, user_id, filename, description, up_time) img_likes (likeID, img_id, user_id) 我需要从user_uploads中获取所有信息,并使用img_id从成员处获取上传者信息,并在img_likes表中进行2次计数,检查会话变量中的user_id和img_id是否存在,并获取img总喜欢数 S

我有三张桌子:

members (id, name, surname, usr_img)

user_uploads (imgID, user_id, filename, description, up_time)

img_likes (likeID, img_id, user_id)
我需要从user_uploads中获取所有信息,并使用img_id从成员处获取上传者信息,并在img_likes表中进行2次计数,检查会话变量中的user_id和img_id是否存在,并获取img总喜欢数

SELECT user_uploads.* AS uu, members.*, COUNT(img_id, user_id) AS usr_liked, COUNT(img_id) AS total_likes
FROM user_uploads
INNER JOIN members AS m ON m.id = uu.user_id -- owner info
INNER JOIN img_likes AS il ON il.img_id = uu.imgID AND il.user_id = ? -- check if logged in user already liked
INNER JOIN img_likes AS ilt ON ilt.img_id = uu.imgID -- total likes
GROUP BY img_id, user_id
ORDER BY up_time DESC
我不需要从img_id中获取任何信息,只需计算行数。我不知道是否需要内部连接,也许是为了指定用户id

要获得计数:

$usr_liked = row['usr_liked'];
$total_likes = rwo['total_likes'];
这样行吗

编辑:添加新查询:

SELECT
    user_uploads.*,
    (
        SELECT *
        FROM members m
        WHERE m.id = user_uploads.user_id
    ),
    (
        SELECT COUNT(*)
        FROM img_likes t
        WHERE t.img_id = user_uploads.imgID AND t.user_id = ?
    ) AS user_likes,
    (
        SELECT COUNT(*)
        FROM img_likes t
        WHERE t.img_id = user_uploads.imgID
    ) AS total_likes
FROM user_uploads
ORDER BY up_time DESC

您可以使用子查询:

选择 uu.*, m、 *, 选择COUNTt* 来自img_喜欢t 其中t.img_id=uu.imgID和t.user_id=? 如用户所愿, 选择COUNTt* 来自img_喜欢t 其中t.img_id=uu.imgID 如你所愿 从…起 用户上传为uu 内部连接成员为m ON m、 id=uu.user\u id 订购人 uu.up\U时间描述
谢谢你的回答。由于一些错误,我修改了它。如果我加入members表,我会得到一个错误,所以我只是像子查询一样添加了它。但它给出了一个错误:操作数应该包含1columns@ChazyChaz:错误已经告诉您一切,子查询应该只返回一个结果。像以前一样返回成员内部联接。p、 我已经编辑了我的答案以获得完整的查询。是的,是我的错,我忘了重命名表。谢谢,我在工作!