Query, subquery o cosa?

Salve a tutti come va?

Sono di nuovo in panne per via di una query....non mi entreranno mai in testa per bene  :tichedoff:

Ho la seguente struttura delle tabelle:

Tabella Statitiche:

CREATE TABLE `statistics` (
  `idstatistics` int(11) NOT NULL auto_increment,
  `iduser` int(11) default NULL,
  `idlang` int(11) default NULL,
  `datetime` datetime default NULL,
  `ip` varchar(30) default NULL,
  `referer` varchar(255) default NULL,
  `user_agent` varchar(255) default NULL,
  `times` int(11) NOT NULL default '1',
  PRIMARY KEY  (`idstatistics`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


Tabella Utente:

CREATE TABLE `user` (
  `iduser` int(11) NOT NULL auto_increment,
  `name` varchar(30) default NULL
  PRIMARY KEY  (`iduser`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


Tabella Lingue:

CREATE TABLE `language` (
  `idlanguage` int(11) NOT NULL auto_increment,
  `name` varchar(30) default NULL
  PRIMARY KEY  (`idlanguage`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Ecco cosa desidero fare:

Desidero creare una View che mi permetta di elencare nel seguente modo i records:

iduser idlang total
1         1    10
1         2    3
1         3    32
3         2    5
2         3    15
1         4    1

Un utente può avere più lingue impostate e quindi per fare una statistica su ogni lingua devo sommare tutti i records del determinato utente che hanno la stessa lingua creando così una view che mi permette di far risparmiare un bel pò di query via codice. Ho cercato di creare delle subquery ma non ci sono riuscito!

Grazie

inviato 10 anni fa
ulisse
X 0 X

Prova con:

SELECT iduser, idlang, count(idlang) as totale FROM statistics GROUP BY iduser, idlang

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie mille dell'aiuto! Funziona...

risposto 10 anni fa
ulisse
X 0 X

Fammi capire una cosa, per favore  ::)

Quando devo realizzare una query che raggruppa un insieme di campi come quelli da me richiesti hai detto che devo scrivere:

SELECT iduser, idlang, count(idlang) as totale FROM statistics GROUP BY iduser, idlang

ma se voglio aggiungere la somma dei campi che hanno lo stesso referer come devo fare? Secondo l'esempio che hai fatto tu mi verrebbe solamente di scrivere una cosa del genere:

SELECT iduser, idlang, count(idlang) as totale, count(referer) as referer FROM statistics GROUP BY iduser, idlang

ma non funziona :(

risposto 10 anni fa
ulisse
X 0 X

Il conteggio viene eseguito dopo il raggruppamento quindi per contare un numero di righe devi prima raggrupparle secondo un criterio.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Continuo a non capire perchè non funziona!

Per raggruppare per tipo di dato inserito in un determinato campo devo inserire nella clausola group by il nome del campo. Giusto?

 :bye:

risposto 10 anni fa
ulisse
X 0 X

Se vuoi semplicemente raggruppare tutti i dati della tabella secondo il referer ti basta fare così:

SELECT referer, count(referer) as tot_referer FROM statistics GROUP BY referer

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda