2017-08-31 51 views
1

我有這些表Mysql的選擇用戶friendes喜歡

職位表

CREATE TABLE `users_posts` (
    `pid` INT(11) NOT NULL AUTO_INCREMENT, /*post id*/ 
    `uid` INT(11) NOT NULL, /*user who created the post, owner*/ 
    `created_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `updated_date` DATETIME NOT NULL, 
    `post_status` TINYINT(1) NOT NULL, 
    `content` TEXT NULL COLLATE 'utf8_general_ci', 
    PRIMARY KEY (`pid`), 
) 

連接表

CREATE TABLE `users_connections` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `user_1_uid` INT(11) NOT NULL, /*user id*/ 
    `user_2_uid` INT(11) NOT NULL, /*friend user id of user id*/ 
    `connections_status` TINYINT(4) NOT NULL, 
    PRIMARY KEY (`id`) 
) 

喜歡錶

CREATE TABLE `post_ups` (
    `upid` INT(11) NOT NULL AUTO_INCREMENT, 
    `uid` INT(11) NOT NULL, /*user id who like the post*/ 
    `puid` INT(11) NOT NULL, /*post owner user id=users_posts.uid*/ 
    `pid` INT(11) NOT NULL, /*post id=users_posts.pid*/ 
    `up_status` TINYINT(1) NOT NULL, 
    PRIMARY KEY (`upid`), 
    INDEX `uid` (`uid`), 
    INDEX `up_status` (`up_status`), 
    INDEX `pid` (`pid`) 
) 

,我需要選擇的所有帖子和在我的查詢裏面檢查ED如果一些我的朋友中有喜歡該職位目前我選擇,如果屬實,我可以證明這個職位上的其他職位的頂部,以顯示更多的相關內容

SELECT *,IF(CHECK IF FREIND LIKED THIS POST PUID == F_UID) FROM users_posts 

這是可能的?

+0

這張貼您選擇,並在其上代表 – Ambika

+0

帖子FOME users_posts(SELECT * FROM users_posts) – iMyth

+0

一個朋友是如何喜歡這個職位嗎?在你的表格數據的形式... – Myonara

回答

0

查詢必須象下面這樣:

SELECT up.*, 
    (SELECT count(*) FROM post_ups pups 
     WHERE up.pid=pups.pid AND up.uid <> pups.uid/*exclude own like*/ 
     AND EXISTS (SELECT 0 FROM users_connections uc 
          WHERE uc.user_1_uid=up.uid/*pups.puid*/ AND uc.user_2_uid=pups.uid)) relevance 
    FROM users_posts up 
ORDER BY relevance DESC; 
+0

我需要的結果是在查詢內我不想選擇朋友喜歡的帖子,我需要選擇所有帖子,並在查詢內我需要檢查我的一些朋友是否喜歡我正在選擇的帖子,如果屬實,我可以在其他帖子頂部顯示此帖顯示更多相關內容 – iMyth

+0

我編輯過plz檢查 – nikli