Reputation: 1472
I'am making a query in which I want to select those records which when a user logged in cannot see but his friend can see it . i. e. a notification in which jhon doe updates his status and vikram should see it not john doe . can any one help in this
here is the query
select *
from notification
where title_text='Global Notification'
and user_id=3 and owner_user_id != 3 and is_seen=0
order by time_stamp desc
Here user id
is the one who is logged in.
and owner_user_id
is the one who made the status update
So when john doe made a update (owner_user_id
) only vikram should see it (user_id
) not johndoe
Upvotes: 0
Views: 121
Reputation: 5089
At first use integers for messages status (title_text
should be something like message_type
), it will be faster for database.
Next step: if You want to create status system, try to do something like mail system, it'll have fields like these: id
,from_id
,to_id
,message_type
,message
,time_stamp
, status
. Your friend's status will be added to this table like
NULL,3,15,1,1,'blablabla','2012-01-13 11:44:00',0
Next step get all notification (message_type=1, for example)
SELECT * FROM 'my_messages' WHERE to_id=15 AND message_type=1 AND status=0 ORDER BY time_stamp DESC
You'll get all new(status=0) notifications(message_type=1) for current user(to_id=15)
If You want to create a public statuses, You shouldn't check access to them in WHERE clause. Create array of users that You read and select their statuses You didn't read(save read statuses to COOKIE):
$myFriends = array(4,17,69,254,1,24); // users id
$iHaveRead = array(12,55,1245,1245,1243); // messages id
$myNotification = mysql_query("
SELECT * FROM 'my_notifications'
WHERE
owner_user_id IN (".implode(',',$myFriends).")
AND
time_stamp > DATE_SUB(NOW(), INTERVAL 1 MONTH)
AND
id NOT IN (".implode(',',iHaveRead ).")
ORDER BY time_stamp DESC
");
This query will return all unread Your friends' statuses in 1 month
Upvotes: 1
Reputation: 100175
select *
from notification
where title_text='Global Notification'
and user_id=3 and owner_user_id <> 3 and is_seen=0
order by time_stamp desc
Upvotes: 0