Chazy Posted October 24, 2014 Share Posted October 24, 2014 Hi! I'm trying to get working a photo list (library) that I made for my website. I need to query db for somethings and I have to join them all but I'm not very familiarize with this tecquine, neither COUNT/SUM. First I need to get (all) the images from user_uploads table (imgID, user_id, filename, description, up_time, etc), second get the user info from members table (id, name and usr_img) where id = user_uploads.user_id, third and last make 2 counts to know if the logged in user already liked the img ($_SERVER['user_id']) and get the total likes the current "user_uploads.img_id" have. I'm already tried many queries, joining, subquery and finally I'm going to try again joining (or inner join). This is what I have: 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 -- get img owner info INNER JOIN img_likes AS il ON il.img_id = uu.imgID AND il.user_id = ? -- not merge members.id (img owner) with members.id (connected userid) / check if already liked INNER JOIN img_likes AS ilt ON ilt.img_id = uu.imgID -- get img total likes -- maybe group by, but i've not idea ORDER BY up_time DESC -- for the user_uploads.* ??? And this is the php code: if (login_check($mysqli) == true) { $user_id = $_SESSION['user_id']; } else { $user_id = ip2long(get_ip_address()); } if ($stmt = $mysqli->prepare(" 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 INNER JOIN img_likes AS il ON il.img_id = uu.imgID AND il.user_id = ? INNER JOIN img_likes AS ilt ON ilt.img_id = uu.imgID GROUP BY img_id, user_id ORDER BY up_time DESC")) { $stmt->bind_param('i', $user_id); $stmt->execute(); // get photos //$Items->store_result(); //$Items->bind_result(); $Items = $stmt->get_result(); foreach ($Items as $ItemInfo) { $liked = $ItemInfo['usr_liked']; // will this work??? $total_likes = $ItemInfo['total_likes']; $imgID = $aItemInfo['imgID']; // user_uploads if ($liked == 0) { $like = 'Like'; } else if ($liked == 1) { $like = 'Unlike'; } $photo_list .= ' // img // button <span class="total_likes" id="">' . $totallikes . '</span> <a id="' . $total_likes . '" class="likes">' . $like . '</a> '; } } I'm not sure how to do this and I'd appreciate any help. Thanks in advance! Link to comment https://forums.phpfreaks.com/topic/292035-join-queries-and-get-counts/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.