Count Inner Join e stampa record con id non duplicati

Pubblicità

Alexander

Nuovo Utente
Messaggi
24
Reazioni
0
Punteggio
25
Salve,
gentilmente, ho dei problemi con la mia query.

In parole povere effettuo una inner join su due tabelle e prelevo i dati uguali con la condizione ON, poi dovrei conteggiare i record che hanno lo stesso id e togliere i duplicati.
In parole povere da questa situazione:
User_id Nome_utente email
02 Alex asds@yahoo.it
02 Alex asds@yahoo.it
02 Alex asds@yahoo.it
03 Antonio sad@libero.it
05 Giulio ewtt34@gmail.com

dovrei avere stampato:
02 Alex asds@yahoo.it (3 risultati)
03 Antonio sad@libero.it (1 risultato)
05 Giulio ewtt34@gmail.com (1 risultato)

Ecco la select inner join:

Codice:
$query = "SELECT tabella_users.user_id, tabella_users.user_login, tabella.user_email, tabella2.link_id, tabella2.link_author FROM tabella INNER JOIN tabella2 ON tabella.user_id = tabella2_links.link_author ORDER BY tabella.user_id ASC";

In che modo posso inserire Count()e la stampa delle sole voci non duplicate?

Grazie sin da ora per la vostra professionalità e gentilezza

A presto e buona giornata ;)
 
Mi sembra una situazione strana, user_id dovresti imporlo chiave primaria e quindi non permettere duplicati di user_id, se così non è, ti consiglio di provvedere a definire una chiave primaria, perchè righe duplicate in una tabella sono da evitare assolutamente.
"if it doesn't have a primary key, it's not a table" cit. Joe Celko

Comunque, in SQL, per nascondere i duplicati di un certo attributo si usa DISTINCT.
Codice:
SELECT DISTINCT user_id, nome_utente, email FROM tabella
nasconderà le righe con user_id duplicati.
Se vuoi avere il conto dei duplicati puoi provare una cosa del genere:
Codice:
SELECT user_id, user_name, email,COUNT(*) FROM tabella GROUP BY user_id
ma ripeto, dovresti seriamente considerare l'idea di non averli proprio quei duplicati, sono in disaccordo con le fondamentali linee guida della progettazione dei database.
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top