2013-02-12 5 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)); 

Я хочу получать следующие данные для любого MessageID и идентификатор пользователя из user_messages

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 DB и Struts2

+0

Можете ли вы дать подробные заявления о проблемах для запросов, которые вы ищете? Как и в каких областях, которые вы хотите, когда вы говорите «последние 10 комментариев, связанных с messageid в восходящей от таблицы комментариев (одно сообщение может содержать несколько комментариев),' – Incognito

+0

Я упомянул 5 пунктов, так как хочу результат. –

+0

Итак, по 'последним 10 комментариям ....' вам просто нужно значение столбца 'comment' из таблицы' comments'? – Incognito

ответ

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),

SELECT small_pic_path 
FROM post_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 –

+0

Спасибо за ответ, но я хочу, чтобы все как один запрос или одна функция, как это сделать –

0

4) всего нравится из, как таблицы,

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

5) все детали (smsusers. *, Profile_pic. *) Из отправлено

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

Спасибо за ответ. У меня есть точка, я попробую это –

+0

MokroB Я пробовал, но это не беспокоит. I trien аналогичная вещь, пожалуйста, см. [Sqlfiddle] (http://sqlfiddle.com/#!2/30321/16) –

-1

Вы, кажется, получили ответ. Сообщите мне, как это было, и если вам нужно что-нибудь еще.

+0

Subrojit У меня есть идея. Я пытаюсь, но не получаю выход –