Bir film DB projede ben üzerinde çalışıyorum, her kullanıcının bir etkinlik linki var. Ben Facebook bunu yapar ama biraz farklı ne gibi grup benzer faaliyetleri, istiyorum.
Bir kullanıcı bir film için bir inceleme yazar, ve bir dakika sonra o da bu film için oy ve 5 dakika sonra o film için bir römork karşıya Örneğin, ben etkinlik yem (gruplandırılmış) birlikte bunu göstermek istiyorum.
Ben veritabanı sorgulama zaman en iyi o grup olduğunu düşünüyorum ama tüm verileri almak için gerçekten büyük bir JOIN kullanın çünkü bu durumda olası sanmıyorum:
SELECT ua.datetime, ua.imdbID, ua.personID, sa.activityID, sa.activity, m.title, m.year, p.name, umv.vote, upv.vote, r.review, t.youTubeID, ps.filename, ph.filename
FROM user_activity ua
JOIN sys_activities sa ON ua.activityID = sa.activityID
LEFT OUTER JOIN movies m ON ua.imdbID = m.imdbID
LEFT OUTER JOIN persons p ON ua.personID = p.personID
LEFT OUTER JOIN user_movies_vote umv ON umv.userID = ua.userID AND umv.imdbID = ua.imdbID
LEFT OUTER JOIN user_persons_vote upv ON upv.userID = ua.userID AND upv.personID = ua.personID
LEFT OUTER JOIN reviews r ON r.userID = ua.userID AND r.imdbID = ua.imdbID
LEFT OUTER JOIN (
select imdbID, userID, youTubeID, max(hd) as MaxTrailerStatus
from trailers
group by imdbID
) t ON ua.imdbID = t.imdbID AND ua.userID = t.userID
LEFT OUTER JOIN (
select imdbID, filename, max(main) as MaxPosterStatus
from posters
group by imdbID
) ps ON ua.imdbID = ps.imdbID
LEFT OUTER JOIN (
select personID, filename, max(main) as MaxPhotosStatus
from photos
group by personID
) ph ON ua.personID = ph.personID
WHERE ua.userID = ?
ORDER BY ua.datetime DESC
I want to know how to do it either by modifying the query or using PHP. Thanks.