2013-02-12 76 views
3

数据我有以下表需要单个查询来从表

 //all users deails 
    smsusers(id,fname , lname ,primary key(id)); 

//message details of users 
//one smsusers can have N messages 
user_messages(messageid,message,adddate ,sentby,visibility, 
userid,primary key(messageid),foreign key(userid) references smsusers(id), 
foreign key(sentby) references smsusers(id)); 


//One message(user_message) can have N comments 
comments(comment_id,comment_on ,commented_by,comment_date, 
comment,foreign key(commented_by) references smsusers(id), 
primary key(comment_id)); 

//one message(user_message) can have N post_images 
post_images(image_id,small_pic_path,userid,messageid, 
foreign key(userid) references smsusers(id),primary key(image_id)); 


//one message(user_message) can have N likes 
likes(element_id,element_type ,liked_by, 
foreign key(liked_by) references smsusers(id) ,adddate, 
primary key(element_id)); 


    //one smsusers(user) can have 1 profile_pic 
profile_pic(pic_id varchar(200),small_pic_path ,userid , 
foreign key(userid) references smsusers(id),primary key(pic_id)); 

我想获取的user_messages的任何邮件ID和用户ID下面的细节

1)all details from user_message, 
    2)last 05 comments related to messageid in ascending order from comments table 
     (one message can have multiple comments)which includes comment_id ,comment, 
     comment_date,and details of commented_by(fname,lname,small_pic_path). 
    3)all small_pic_path from post_images(one message can have multiple images), 
    4)total likes from like table, 
    5)all details (smsusers.*,profile_pic.*) of sentby(of table user_messages) 

我想获取所有这些细节。

我应该使用查询还是函数来获取所有这些信息?

请建议查询或函数来获取所有数据。

我使用MySQL数据库和struts2的

+0

您可以针对您要查询的查询提供详细的问题陈述吗?正如在你想要的字段中,当你说'评论表 (一条消息可以有多条评论)'时,最新的10条评论与messageid相关,' – Incognito 2013-02-12 10:06:16

+0

我提到了5分,因为我想要结果。 – 2013-02-12 10:11:20

+0

因此,通过'最新的10条评论....'你只需要'comment'表中的'comment'列的值? – Incognito 2013-02-12 10:14:17

回答

0

1)all details from user_message

SELECT * FROM user_messages WHERE userid = <userID> AND messageid = <messageID>; 

2)last 10 comments related to messageid in ascending order from comments table (one message can have multiple comments)which includes comment_id ,comment, comment_date,and details of commented_by(fname,lname,small_pic_path).

SELECT a.comment_id, a.comment, a.comment_date, b.fname || b.lname || c.small_pic_path "Commented by" 
FROM comments a, smusers b, profile_pic c, user_messages d 
WHERE d.messageid = <messageID> 
AND d.userid = b.id 
AND b.id = c.userid 
ORDER BY comment_date 
LIMIT 0, 10; 

3)all small_pic_path from post_images(one message can have multiple images),

​​

4)total likes from like table,

SELECT * FROM likes; 

5)all details (smsusers.*,profile_pic.*) of sentby

You have not posted the structure of sentby 
+0

sentby是一个外键在user_messages和主键smsusers – 2013-02-13 06:39:00

+0

感谢您的回复,但我希望所有作为一个查询或一个功能如何做到这一点 – 2013-02-13 06:40:13

0

4)如表总喜欢

SELECT count(*) AS total_likes FROM likes WHERE element_id = <messageID>; 

5)所有细节(smsusers *,的profile_pic。*) sentby

SELECT smsusers.*,profile_pic.* FROM user_messages 
    JOIN smsusers 
     ON user_messages.sentby = smsusers.id 
    JOIN profile_pic.userid = smsusers.id 
WHERE user_messages = <messageID> 

现在加入他们都在同一个查询

SELECT (<Query_1>),(<Query_2>),[...],(<Query_N>) 
+0

感谢您的答复。我得到了点我会尝试它 – 2013-02-21 11:16:29

+0

MokroB我试过,但它不worikng。我发现类似的东西请参阅[sqlfiddle](http://sqlfiddle.com/#!2/30321/16) – 2013-02-23 14:34:36

-1

你似乎已经得到了答案。 让我知道那是怎么回事,如果你需要别的东西。

+0

Subrojit我得到了Idea。我正在尝试但没有获得输出 – 2013-02-23 12:37:41