|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5744
|
[SQL] Una query che non riesco a risolvere
Ho una vista ottenuta da precedenti query così composta
Cliente Prodotto (es in cui riporto alcune tuple: 1 auto, 1 casa, 2 auto, 1 casa... ) Devo calcolare quante volte il cliente ha comprato il prodotto. In questo caso dovrei ottenere ad esempio che 1 ha comprato casa 2 volte.
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Ciao
![]() hai provato con: Codice:
select count(distinct Prodotto) where Cliente = 1 oppure se per un prodotto specifico: Codice:
select count(Prodotto) where Cliente = 1 and Prodotto = 'casa'
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2775
|
Sono un po' arruginito ma ci provo...
Codice:
select Cliente, Prodotto, count(Prodotto) from vista groupby(Cliente,Prodotto) |
![]() |
![]() |
![]() |
#4 | ||
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5744
|
Quote:
Quote:
Inviato dal mio ASUS Transformer Pad TF300T con Tapatalk 2
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
||
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2775
|
Potrei anche aver sbagliato la sintassi, ma credo che il raggruppamento su più colonne non sia un problema
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5744
|
Quote:
Inviato dal mio ASUS Transformer Pad TF300T con Tapatalk 2
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
boh, quella di wignman87 per me è corretta:
Codice:
select cliente, prodotto, count(prodotto) as ordered from tua_vista group by cliente, prodotto cliente prodotto ordered 1 auto 3 2 auto 1 1 casa 2 2 casa 1
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5744
|
Funziona, il raggruppamento che mi avete suggerito è corretto e adesso sono pure riuscito ad evitare la vista. La questione dei due attributi era relativa al fatto che non dovevano essere messi tra parentesi tonde.
Ora vorrei uno step in più: supponiamo di avere una tabella cliente con codice, nome, abituale. Per i clienti che hanno acquistato più volte un prodotto, cioè quelli per cui il count produce un risultato mettiamo superiore a 10, la colonna abituale deve assumere il valore "sì", una semplice stringa (ma potrebbe anche essere un boolean, a me interessa il comando). Riferendomi ancora alla vista, ammesso che sia possibile usarla per questa operazione Ho scritto il comando update ma non mi funziona. Codice:
update cliente set abituale = "sì" where codice in (select cliente from vista group by cliente, prodotto having count(*) > 10)
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5744
|
Sembra tutto risolto: ho usato l'operatore in in accordo con la regola che vuole che dalla query di estrazione risulti un insieme, anche di un solo elemento, invece di una sola tupla.
Perchè devo usare l'operatore = in questo caso?
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:12.