Ho bisogno di elencare una serie di utenti (15 per la precisione). Ovviamente ho fatto una select con limit 0,15 solo che dovrei verificare che ciascuno di questi utenti non si trovi nella tabella utenti_bannati. Come faccio??
Ho bisogno di elencare una serie di utenti (15 per la precisione). Ovviamente ho fatto una select con limit 0,15 solo che dovrei verificare che ciascuno di questi utenti non si trovi nella tabella utenti_bannati. Come faccio??
codice:select * from utenti as u left join bannati as b on u.id = b.id where b.id is null
non mi funziona...
Io prima facevo questa select:
praticamente estraevo i primi dieci ordinandoli per numero di occorrenze (ovvero se nella tabella avevo 10 marco e 3 luca ecc... mettevo prima marco poi luca...)codice:"SELECT nome, COUNT(ID)as num FROM utenti WHERE nome IS NOT NULL GROUP BY nomeORDER BY num DESC LIMIT 0,15"
Ora devo aggiungere questa verifica: che gli stessi nomi non siano presenti nella tabella utenti_bannati. Devo estrarre ordinandoli per occorrenze ma assicurandomi che non siano presenti nell'altra tabella. In qualsiasi caso devo ottenere sempre 15 utenti
nessuno?
Puoi usare le subquery?
Che versione di mysql hai?
Prerequisito: MySql 5.x
Supponendo che sia (per esemplificare)
Tabella Utenti:
ID,
nome,
ecc...
Tabella UtentiBannati
ID (corrisponde a ID di Utenti)
...
la query:
Speriamo che sia giusto!codice:SELECT nome, COUNT(ID) as num FROM `Utenti` where `ID` NOT IN (SELECT `ID` from `UtentiBannati`) GROUP BY nome ORDER BY num DESC LIMIT 0,15
HTH
Zappa
[PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
[Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]