2011-10-07 10 views
5

Per coloro che mi hanno aiutato lungo il cammino con questo clone di Twitter, grazie !! Con il tuo aiuto, sono riuscito a far funzionare la maggior parte delle cose e finalmente ora gli ultimi passaggi della funzione follower.SQL Selezionare per visualizzare un valore solo una volta

In questo momento, ho un set di dati con i seguenti campi: nome utente, Tweet, data

Un esempio dei dati potrebbe essere simile:

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 

e sono stato alle prese con l'SQL dichiarazione che produrrebbe un set di dati in cui ogni utente appare una sola volta con il loro ultimo tweet. Quindi, sulla base di quanto sopra, qualcosa che assomiglia a questo:

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 

Sono stato googling ricerche SQL e ho provato le variazioni del conte, DISTINCT, MAX, ma senza alcun risultato. Qualsiasi aiuto sarebbe molto apprezzato! Grazie!

+0

stai usando MySql o Database MS SQL? –

+0

Ciao, sto usando un database mysql – kurisukun

+0

Prova ad usare espressioni distinte, qual è l'istruzione dello script SQL che usi? –

risposta

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

grazie! Non capisco questa sintassi, ma lascia che studi. – kurisukun

3

sarebbe non funziona solo con

select distinct username, tweet, date order by date desc 

(Questa è la sintassi MSSQL)

Con i nuovi dati alla mano:

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

In realtà, era quasi l'affermazione esatta che ho provato (credo). Il mio set di dati effettivo è un po 'più complicato mentre sto tracciando i dati da altre tabelle. Ho provato questo, ma non ha fatto apparire ogni username una sola volta: SELECT DISTINCT nome utente, contenuto, 'date' dai tweet WHERE user_id IN (SELECT users.id Dagli utenti INNER JOIN user_users ON users.id = user_users.followed_user_id WHERE user_users.user_id = 1) ORDER BY date desc – kurisukun

+0

Probabilmente perché hai letto la variabile username errata ... Vedi risposta modificata ... –

+0

O forse no ... Quali colonne hai effettivamente nella tua tabella tweets? –

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 
Problemi correlati