• Home
  • Forum
  • Fare Web
  • PHP

mysql, selezione dati ricorrenti più volte

  • Creatore Discussione Creatore Discussione gandalf1959
  • Data di inizio Data di inizio 10 Feb 2017

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
  • 10 Feb 2017
  • #1
Buongiorno a tutti.
Ho una tabella (utentiscuola) che contiene i dati di coloro che si sono iscritti ai nostri corsi e i codici delle lezioni a cui hanno partecipato.
Per valutare la fidelizzazione, sto selezionando gli utenti che hanno partecipato a più di una lezione.
Ottengo il risultato con questa query:
PHP:
$query = ("SELECT email,nome,cognome, count(email) FROM utentiscuola GROUP BY email,cognome HAVING count(email) > 1 ORDER BY count(email) DESC");
In questo modo riesco a visualizzare un elenco con nome, cognome, email e numero di presenze (count(email)).
Mi piacerebbe aggiungere anche i codici di tutte le lezioni a cui ha partecipato l'utente.
Il dato è contenuto nel campo id_lezione per ogni riga (e ogni riga corrisponde a una mail).
Non riesco a capire se si può ottenere quello che mi serve.
Immagino che, aggiungendo come campo di select id_lezione:
Codice:
...SELECT email,nome,cognome,id_lezione.....
i codici siano lì, ma non ho idea di come visualizzarli in una forma del tipo:
nome cognome - email - numero ricorrenza - Questo utente ha partecipato alle lezioni 621, 453, 715...
Secondo voi è possibile?
Grazie in anticipo per i suggerimenti
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 10 Feb 2017
  • #2
ciao
secondo me devi usare del codice non ti basta la query che hai postato, ma probabilmente devi fare aun'altra query, un'idea l'avrei (non so se funziona), ma prima di proseguire devi risolvermi un dubbio:
tu hai messo ...GROUP BY email,cognome... cioe oltre che per email hai raggruppato anche per cognome, ora ad es (tralascindo il resto) se hai tra gli altri due record tipo
pinco@pinco.it Mario Rossi
pallo@pallo.it Giuseppe Rossi

avendo raggruppato anche per cognome come fai a distinguere Mario da Giuseppe?
hai fatto una prova del genere?
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
  • 10 Feb 2017
  • #3
in effetti no, ma credo che avendo due mail diverse dovrei trovare un primo Rossi con mail pinco@pinco.it e una seconda riga con Rossi e l'altra mail. O no? provo e poi ti dico.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 10 Feb 2017
  • #4
ciao
si prova, non ho mai avuto occasione di fare un doppio group
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
  • 10 Feb 2017
  • #5
Ciao,
ho provato. Inaspettatamente funziona alla perfezione... prima raggruppa per email, poi per cognome. Quindi con email diverse e cognomi uguali ottengo esattamente le due righe come previsto. Anche il numero delle occorrenze è correttamente attribuito ai due indirizzi mail.
Ora resta da vedere come estrarre i codici delle lezioni per ogni utente...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 11 Feb 2017
  • #6
ciao
ok
i corsi frquentati da uno stesso utente sono nella stssa tabella o in un'altra? se altra cosa lega utentiscuola conn l'altra?
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
  • 11 Feb 2017
  • #7
Stessa tabella


Inviato dal mio iPhone utilizzando Tapatalk
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 11 Feb 2017
  • #8
ciao
PHP:
<?php
/*da quello che capisco i record sono così (giusto?)
id email nome cognome corso
....
21 pinco@pinco.it Mario Rossi cucito
22 pallo@pallo.it Giuseppe Rossi cucito
23 pinco@pinco.it Mario Rossi cucina
24 pinco@pinco.it Mario Rossi giardinaggio
25 pallo@pallo.it Giuseppe Rossi nuoto
26 il_grigio@gandalf.it Sebastanino Verdi cucna
....
*/
// connessione
//per comodità metterei un alias
$query = "SELECT email,nome,cognome, count(email) as ftot FROM utentiscuola GROUP BY email,cognome HAVING count(email) > 1 ORDER BY count(email) DESC";
$ris=mysqli_query($conn, $query);
if(mysqli_num_rows($ris)>0){
    while($riga=mysqli_fetch_assoc()){
        $email=$riga['email'];
        $nome=$riga['nome'];
        $cognome=$riga['cognome'];
        $numero=$riga['ftot'];
        $q_corsi="SELECT corso FROM utentiscuola WHERE email='$email'";
        //nota se es Mario Rossi ha frequentato per due volte il corso di cucina prova ad aggiungere anche GROUP BY corso
        //alla $q_corsi
        $ris_corsi=mysqli_query($conn, $ris_corsi);
        $frequentati=array();
        while($corso=mysqli_fetch_assoc($ris_corsi)){
            $frequentati[]=$corso['corso'];
        }
        $corsi_frequentati=implode(",", $frequentati);
        echo "l'utente $nome $cognome $email ha frequentato n. $numero corsi ($corsi_frequentati)<br />";
    }
}else{
    echo "non ci sono allievi<br />";
}
//......
?>
intanto prova questo, ho un'altra mezza idea (forse migliore) ma devo metterla a punto e vedere se funziona come ragionamento
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
  • 13 Feb 2017
  • #9
scusa il ritardo nella risposta.
ho dovuto occuparmi di un'altra cosa urgente...
Comunque così funziona bene, visualizzo correttamente i codici delle lezioni frequentate da ciascuno.
Ti ringrazio, non avevo proprio pensato a un while all'interno del primo while...
Perfetto, per ora... alla prossima e grazie!
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

D
Selezione di dati da più tabelle in Mysql
  • ds92
  • 28 Dic 2013
  • PHP
Risposte
3
Visite
5K
PHP 1 Gen 2014
ds92
D
P
Creare un menu a discesa dove poter fare una selezione ed estrarre i dati da db MySql
  • paolomi
  • 17 Mar 2011
  • PHP
Risposte
3
Visite
12K
PHP 18 Mar 2011
alessandro1997
F
Problema selezione dinamica select/jsp/mysql
  • form
  • 21 Mag 2014
  • Javascript
Risposte
0
Visite
2K
Javascript 21 Mag 2014
form
F
M
selezione con checkbox php mysql
  • marco4004
  • 19 Gen 2010
  • PHP
Risposte
14
Visite
8K
PHP 17 Feb 2010
blob696
B
M
Personalizzare Mysql su una macchina VPS in Aruba
  • morenog
  • 14 Gen 2025
  • Server Dedicati e VPS
Risposte
0
Visite
688
Server Dedicati e VPS 14 Gen 2025
morenog
M
S
Utilizzare MySql con maschere Access
  • staiul
  • 27 Nov 2024
  • MySQL
Risposte
0
Visite
342
MySQL 27 Nov 2024
staiul
S
K
form Inserimento record mysql
  • Kiko74b
  • 21 Gen 2023
  • PHP
Risposte
2
Visite
1K
PHP 25 Gen 2023
WmbertSea
P
Mysql lento a cancellare
  • paolo.ladoni
  • 18 Nov 2022
  • MySQL
Risposte
1
Visite
1K
MySQL 22 Nov 2022
marino51
P
Codifica caratteri speciali mysql php
  • Peterrey76
  • 24 Ott 2022
  • PHP
Risposte
2
Visite
2K
PHP 23 Apr 2025
webest
N
MAX() + ADD_DATE - per update su Mysql
  • Namaste!
  • 20 Lug 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 20 Lug 2022
Namaste!
N
F
Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili
  • Fra_23
  • 25 Giu 2022
  • PHP
  • 2
Risposte
20
Visite
4K
PHP 16 Lug 2022
zorro
L
tipo boolean non funzionante su mariadb (mysql). E codice php 7.4.
  • luigi777
  • 18 Giu 2022
  • PHP
Risposte
0
Visite
810
PHP 18 Giu 2022
luigi777
L
M
PHP/MySQL - Estrarre valori min e max di ogni gruppo
  • Max61
  • 10 Giu 2022
  • PHP
Risposte
5
Visite
2K
PHP 13 Giu 2022
Max61
M
W
MySQL ciclo in SELECT
  • wolfland
  • 26 Mag 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 26 Mag 2022
wolfland
W
L
Mysql gestionale multipiattaforma
  • lucavalentino
  • 7 Apr 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 7 Apr 2022
lucavalentino
L
W
MySQL SELECT list dinamica
  • wolfland
  • 2 Feb 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 2 Feb 2022
wolfland
W
M
utilizzo mysql in nodejs - crea createdAt e updateAt
  • misonsan
  • 31 Dic 2021
  • MySQL
Risposte
1
Visite
3K
MySQL 31 Dic 2021
misonsan
M
T
colonne di tabelle mysql ordinate
  • twogate
  • 28 Nov 2021
  • MySQL
Risposte
0
Visite
2K
MySQL 28 Nov 2021
twogate
T
M
Sintassi "personalizzata" per mysql workbench?
  • mattiac
  • 27 Set 2021
  • MySQL
Risposte
0
Visite
3K
MySQL 27 Set 2021
mattiac
M
A
Mysql
  • andreainter
  • 26 Ago 2021
  • MySQL
Risposte
0
Visite
1K
MySQL 26 Ago 2021
andreainter
A
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?