2011-10-07 14 views
5

Bu twitter-clone ile yolda bana yardımcı olanlar için teşekkür ederiz! Yardımınız sayesinde, çoğu şeyin çalışmasını ve nihayetinde takipçi işlevinin son adımlarını almayı başardım. gibi görünebilir kullanıcı adı, tweet, tarihSQL Değeri sadece bir kez görüntülenmek için seçin

verilerinin bir örneği:

Şu anda, bir aşağıdaki alanları ile veri kümesi var

Username Tweet    Date 
kenny  hi!    2011-10-07 19:07:00 
stan  hello    2011-10-05 18:07:00 
kenny  looks like rain 2011-10-05 17:07:00 
stan  hello    2011-10-05 14:07:00 
cartman  authoritay!  2010-10-05 14:07:00 

Ve SQL ile mücadele ettiğime Her kullanıcının en yeni tweet'leriyle yalnızca bir kez göründüğü bir veri kümesi oluşturacak bir deyim. Yani, şöyle yukarıda, bir şeye dayanarak: Ben ama boşuna, sql aramaları Googling oldum ve COUNT DISTINCT, MAX varyasyonlarını denedi

Username Tweet    Date 
kenny  hi!    2011-10-07 19:07:00 
stan  hello    2011-10-05 18:07:00 
cartman  authoritay!  2010-10-05 14:07:00 

. Herhangi bir yardım büyük takdir edilecektir! Teşekkür ederim!

+0

Eğer MySQL veya kullanıyorsunuz MS SQL veritabanı? –

+0

Merhaba, mysql veritabanı kullanıyorum – kurisukun

+0

Farklı bir ifade kullanmayı deneyin, SQL komut dosyası kullanımınızı bildirir? –

cevap

6
select d1.username, d1.tweet, d1.date from data d1 where d1.date = 
    (select max(d2.date) from data d2 where d1.username = d2.username) 
+0

'u ekledi Teşekkür ederim bu sözdizimini anlamıyorum, ama çalışmama izin verin. – kurisukun

3

sadece işe olmaz

select distinct username, tweet, date order by date desc 

(Bu MSSQL sözdizimi) elinde yeni veriler sayesinde

:

SELECT DISTINCT tweets.username, content, date from tweets 
WHERE user_id IN (
    SELECT users.id FROM users 
    INNER JOIN user_users ON users.id = user_users.followed_user_id 
WHERE user_users.user_id = 1) 
ORDER BY date desc 
+0

Aslında, denediğim neredeyse tam bir ifadeydi (bence). Diğer veri tablolarından veri çekerken asıl veri kümem biraz daha karmaşık. Bunu denedim, ancak her kullanıcı adı sadece bir kez görünmüyordu: SELECT DISTINCT kullanıcı adı, içerik, tweets from date [tarih] user_id IN (SELECT users.id FROM kullanıcıları INNER JOIN user_users AÇIKLAMA users.id = user_users.fided_user_id WHERE user_users.user_id = 1) SİPARİŞ TARİHİ tarihe göre – kurisukun

+0

Muhtemelen yanlış kullanıcı adı değişkenini okuduğunuz için ... Düzeltilmiş yanıtı gör ... –

+0

Ya da belki de değil ... Tweets tablonuzda hangi sütunlar var? –

1
SELECT f.* 
FROM (
     SELECT Username, MAX(`Date`) as maxval 
     FROM table GROUP BY Username  
    ) AS x INNER JOIN table AS f 
ON f.Username = x.Username AND f.`Date`= x.maxval