Originariamente inviato da PaTeR non PeTeR
Ok, ora spiega XD
JOIN unisce due tabelle in base alla condizione specificata in ON...

per cui se prima avevi due tabelle separate, adesso concettualemente ne hai una in cui le righe dell'una e quelle dell'altra si uniscono solo se g.groupid è uguale a u.groupid (g e u sono solo alias definiti per non riscrivere l'intero nome della tabella ogni volta)...

se provi questa:

SELECT g.groupname
FROM utenti AS u
JOIN groups AS g ON g.groupid = u.groupid

su phpmyadmin te ne renderai conto.. vedrai una macrotabella con i cmapi di tutte e due.

Se non metti la clausola ON <condizione> ottiei un prodotto cartesiano, cioè tutte le tuiple (righe) della pima tabella per uttte quelle della seconda (quindi un po' senza senso perchè vedrai tutti gli utenti in relazione con tutti i gruppi.. ma fallo in phpmyadmin se vuoi avere un'idea di come funziona la cosa)

il where funge normalmente, selezionando una sola riga della tabella (o comunque un sottoinsieme proprio o improprio)