MySQL: restituire il conteggio totale dei record da una croce unita fila?
-
21-12-2019 - |
Domanda
Ecco il mio violino SQL: http://www.sqlfiddle.com/#!2/ 672F4 / 1
Sto cercando di ottenere il conteggio totale dei record per ogni name
(tecnicamente, il loro pid
a croce) esistente all'interno della tabella info
.Quindi, ad esempio, la colonna TOTAL
dovrebbe leggere 3 per Rob e 1 per tutti gli altri (Jon, Tim, Ben).L'output dovrebbe apparire come:
PID NAME TOTAL
1 rob 3
2 jon 1
3 tim 1
4 ben 1
.
Struttura:
create table names (
pid int(10),
name char(20)
);
insert into names values
(1, 'rob'),
(2, 'jon'),
(3, 'tim'),
(4, 'ben');
create table info (
id int(10),
pid int(10),
info char(20),
extra char(10)
);
insert into info values
(1, 1, 'rob blah', 'heh 1'),
(2, 2, 'jon blah', 'ha 1'),
(3, 3, 'tim blah', 'ho 1'),
(4, 4, 'ben blah', 'hi 1'),
(5, 1, 'rob blah', 'heh 2'),
(6, 1, 'rob blah', 'heh 3');
.
Query:
SELECT pid, name, total FROM names CROSS JOIN ( SELECT COUNT(extra) AS total FROM info ) AS total;
.
Qualsiasi assistenza sarebbe molto apprezzata.
Soluzione
SELECT names.pid, name, COUNT(extra) as total
FROM names
LEFT JOIN info
ON info.pid=names.pid
GROUP BY names.pid
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow