2011-08-02 5 views
2

j'ai enregistré les messages de l'utilisateur dans un tableau appelé les messages avec des champsAjouter une colonne supplémentaire avec condition dans requête Union

id 
userid 
posttitle 
status 

j'ai enregistré utilisateur messages favorited dans la table fav_posts avec des champs

id 
post_id 
userid 

Poster Table

code:

id userid  posttitle status 
1 1200 title 1 Active 
2 1200 title 2 Active 
3 1200 title 3 Active 
4 1200 title 4 Active 
5 1201 title 5 Active 
6 1201 title 6 Active 
7 1201 title 7 Active 
8 1201 title 8 Active 

Fav_posts Table code:

id post_id  userid 
1 1 1200 
2 2 1201 
3 5 1202 
4 6 1202 
5 6 1201 
6 8 1201 
7 8 1200 
8 7 1200 

Maintenant si je entrée un utilisateur je dois obtenir les dossiers qui existent dans les deux tableau mais devrait venir une seule fois et d'une valeur de champ distinct c.-à- si je suis entré id comme 1200 le résultat devrait être

code:

post_id  title post_came_in 
1 title 1 BOTH 
8 title 8 FAV 
7 title 7 FAV 
2 title 2 MYPOST 
3 title 3 MYPOST 
4 title 4 MYPOST 

je suis en mesure d'énumérer la liste des syndicats mais je ne sais pas comment inclure le troisième champ dans le jeu de résultats après avoir vérifié et constaté que le même enregistrement vient dans les deux Mes messages et les messages Favorited

i utilisé la requête ci-dessous pour obtenir le résultat Union

SELECT post_id,title 
FROM posts 
LEFT JOIN fav_posts ON posts.id = fav_posts.post_id WHERE fav_posts.userid = 1200 
UNION ALL 
SELECT id AS post_id,title FROM posts WHERE userid = 1200 

S'il vous plaît me dire comment pourrais-je inclure un critère de contrôle dans la requête

Cordialement Anees

Répondre

0
SELECT post_id, title, 'FAV' AS `post_came_in` FROM posts LEFT JOIN fav_posts ON posts.id = fav_posts.post_id WHERE fav_posts.userid = 1200 
UNION ALL 
SELECT id AS post_id, title, 'MYPOST' AS `post_came_in` FROM posts WHERE userid = 1200 
2
SELECT 
post_id, title, 
CASE WHEN posts.id IS NULL THEN 'FAV' 
     WHEN fav_posts.id IS NULL AND posts.id IS NOT NULL THEN 'MYPOST' 
     ELSE 'BOTH' 
END post_came_in 
FROM 
posts FULL JOIN fav_posts ON posts.id = fav_posts.post_id 
WHERE 
(fav_posts.userid = 1200) OR (posts.userid = 1200) 
Questions connexes