messages
| id* | published_id* | owner_id | body_id | group1 | group2 | group3 | group4 | date_server | ... |
| 1 | lance@suka | lance@suka | 213 | moyuzel | 12312342353 | ... | |||
| 1 | gays@suka | somegay@suka | 214 | communities | 12312344355 | ... | |||
| 1 | somegay@suka | somegay@suka | 214 | communities | 12312344355 | ... |
message_bodies
| body_id* | owner_id | group1 | group2 | group3 | group4 | topic | body | ... |
| 213 | lance@suka | moyuzel | ляляля | ... | ||||
| 214 | somegay@suka | communities | фафафа | ... |
groups
| id* | owner_id* | user_id* | ... |
| moyuzel | lance@suka | kukutz@suka | ... |
| moyuzel | lance@suka | @lrpg | ... |
| communities | somegay@suka | gays@suka | ... |
| members | gays@suka | somegay@suka | ... |
| members | gays@suka | kukutz@suka | ... |
users
| id* | is_community | ... |
| lance@suka | 0 | ... |
| kukutz@suka | 0 | ... |
| gays@suka | 1 | ... |
| somegay@suka | 0 | ... |
SELECT m.id
FROM messages as m,
groups as g,
groups as gc
WHERE
( — сборка ленты по друзьям
m.published_id in $friends
)
AND
( — секьюрити
(m.group1=" " AND gc.owner_id=$user AND gc.id="self" AND g.id="self") OR
( — получение группы
m.group1 = g.id OR m.group2 = g.id OR
m.group3 = g.id OR m.group4 = g.id
)
AND
( — есть ли запросивший в группе
($user = g.user_id AND $user=gc.owner_id AND self=gc.id) OR
($nodeuser = g.user_id AND $user=gc.owner_id AND self=gc.id) OR
( g.user_id = gc.owner_id AND gc.user_id = $user AND gc.id='members' )
))
AND g.owner_id = m.owner_id
AND m.date_server < $time
ORDER BY date_server DESC
LIMIT $psize;
Пример Запроса
SELECT m.id, m.body_id, m.published_id, m.group1
FROM messages as m,
groups as g,
groups as gc
WHERE
( m.published_id = 'lance@suka' OR m.published_id = 'gays@suka'
)
AND
(
(m.group1="" AND gc.owner_id='kukutz@suka' AND gc.id="self" AND g.id="self") OR
(
m.group1 = g.id OR m.group2 = g.id OR
m.group3 = g.id OR m.group4 = g.id
)
AND
(
('kukutz@suka' = g.user_id AND 'kukutz@suka'=gc.owner_id AND self=gc.id) OR
('@suka' = g.user_id AND 'kukutz@suka'=gc.owner_id AND self=gc.id) OR
( g.user_id = gc.owner_id AND gc.user_id = 'kukutz@suka' AND gc.id='members' )
))
AND g.owner_id = m.owner_id
AND m.date_server < NOW()
ORDER BY date_server DESC
/Нпж Тест Сьют
Запрос Версия 3