Bir kullanıcının sahip olduğu toplam puan miktarını ve geçerli ay puanlarını almaya çalışıyorum. Bir kullanıcı bir puan aldığında, bir zaman damgası ile puan tablosuna girer. Toplamlar zaman damgasını yok sayarken, geçerli ayın puanları doğru zaman damgasına sahip noktaları arar (ayın ilk gününden itibaren).Neden bu mysql sorgusu bana çöp sonuçları veriyor?
SELECT user_id, user_name, sum(tpoints.point_points) as total_points, sum(mpoints.point_points) as month_points
FROM users
LEFT JOIN points tpoints
ON users.user_id = tpoints.point_userid
LEFT JOIN points mpoints
ON (users.user_id = mpoints.point_userid AND mpoints.point_date > '$this_month')
WHERE user_id = 1
GROUP BY user_id
noktaları Tablo yapısını Bu çok sayıda sonuçlanan
CREATE TABLE IF NOT EXISTS `points` (
`point_userid` int(11) NOT NULL,
`point_points` int(11) NOT NULL,
`point_date` int(11) NOT NULL,
KEY `point_userid` (`point_userid`),
KEY `point_date` (`point_date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
, eşleşen satır sayısı ile çarpılan tüm noktaların toplamı eşittir bu.
Bunu, alt sorgular veya birden fazla sorgu kullanılmadan gerçekleştirmem gerekiyor.
tablo yapısını gönderebilir deneyin? – sfossen
tabiki, iki kere katılıyorsunuz, bu yüzden bir kartezyen çarpım – vartec
Katılmak zorunda olduğunuzu düşünmüyorum, gönderdiğim cevabı deneyin. – sfossen