PDA

View Full Version : MySql join ...contare record uguali


Frenky-90
18-03-2019, 22:23
Ciao in una tabella Towns ho un campo person_id che lega l id di una persona a quel record.
Poi ho una tabella Persons con id e nome..

In pratica con una join i vorrei fare questo:
Fare lil display di tutta la lista persons(nome) e affianco ad ogni record avere un Count di quante volte il suo id è presente nella tabella Towns town_id...


Esempio
Tizio 2
Caio 4
Sempronio 7

Spero di essermi spiegato bene :mc:

Volutomitra
19-03-2019, 06:17
Se le tabelle sono:

persons |id|nome|
towns |person_id|...

La query dovrebbe essere:


SELECT
'persons'.'nome',
COUNT('towns'.'person_id') AS 'count'
FROM
'persons'
LEFT JOIN
'towns'
ON ('towns'.'person_id'='persons'.'id')
GROUP BY
'persons'.'id', 'persons'.'nome'
ORDER BY
'persons'.'nome'

Frenky-90
19-03-2019, 07:02
ok grazie sembra che non da errori sql.
Solo una cosa... Nel foreach dove la passo facendo
$persons->nome // ottengo il nome
cosa metto invece per far venire fuori il count?

Kaya
19-03-2019, 08:03
ok grazie sembra che non da errori sql.
Solo una cosa... Nel foreach dove la passo facendo
$persons->nome // ottengo il nome
cosa metto invece per far venire fuori il count?

$persons->count ?
Se poi è perchè non ti piace la parola modifica

SELECT
'persons'.'nome',
COUNT('towns'.'person_id') AS 'totale'

e ti riferisci a "totale"

Frenky-90
19-03-2019, 08:10
$persons->count ?
Se poi è perchè non ti piace la parola modifica

SELECT
'persons'.'nome',
COUNT('towns'.'person_id') AS 'totale'

e ti riferisci a "totale"

hai ragione scusa. io provavo ma mi dava errore.. Molto probabilmente mettevo il simbolo di variabile cosi $persons->$counter:mc:

Grazia a tutti e due.. Funziona.:)