Originariamente inviato da zacca94
Tabella:
Codice PHP:
CREATE TABLE `online` (
    `
id_nicksmallint unsigned NOT NULL default '1',
    `
nickvarchar(25NOT NULL default '',
    `
ipvarchar(40NOT NULL default '',
    `
timeint unsigned NOT NULL default '0',
    `
visibletinyint NOT NULL default '0' -- utente invisibile privato )
)
TYPE=MyISAM DEFAULT CHARSET=utf8

Query:
Codice PHP:
SELECT
    COUNT
(n1.nick) as num_guests// Questo campo seleziona i guest
    
COUNT(n2.nick) as num_hidden// Questo gli utenti "invisibili"
    
COUNT(n3.nick) as num_users // questo il numero di utenti "visibili"

FROM     online as n1 
LEFT JOIN online 
as n2 ON n2.visible // Seleziona il numero di utenti "invisibili"
LEFT JOIN online as n3 ON n3.nick <> 'guest' AND n3.visible 0  // Seleziona gli utenti "visibili che non sono guest
WHERE n1.nick 'guest'// Seleziona i guest 
Peccato che la query non funziona, mi restituisce 0 sugli utenti "invisibili" e 0 su quelli "visibili". Sui guest funziona...
Ciao,
a parte che la sintassi del JOIN che usi è sbagliata.
Comunque mi sa che per la tua situazione (hai solo una tabella), ti conviene spezzare la query in 3 query.

Ad esempio
Codice PHP:
$result1=mysql_query("SELECT COUNT(nick) AS num_guests FROM online WHERE nick='guest'"); //GUEST
$result2=mysql_query("SELECT COUNT(nick) AS num_hidden FROM online WHERE visible='1'"); //INVISIBILI
$result3=mysql_query("SELECT COUNT(nick) AS num_users FROM online WHERE nick!='guest' AND visible='0'"); //VISIBILI GUEST 
Spero di esserti stato d'aiuto.