Domanda

Immagina di avere una tabella come questa:

id: Prodotto: shop_id

1: Pallacanestro: 41

2: Calcio: 41

3: Rocket: 45

4: Auto: 86

5: Aereo: 86

Ora, questo è un esempio di grande centro commerciale Internet, dove ci sono negozi che vendono a un cliente, quindi i clienti possono scegliere più prodotti da ogni negozio e acquistarli in un paniere.

Tuttavia, non sono sicuro che esista una sintassi SQL che mi consenta di ottenere semplicemente shop_ids unici e il numero totale dei prodotti di tali negozi nel carrello clienti. Quindi otterrei qualcosa del tipo:

Shop 41 ha 2 prodotti

Acquista 45 un prodotto

Acquista 86 prodotti a due

Posso fare query SQL per scorrere tra le tabelle per creare una sorta di variabile di array ['shop_id'] ['number_of_products'] che memorizzerebbe tutti gli shop_ids di tutti i prodotti, quindi "li univoci" " - aumentare e contare quante volte ho dovuto ritagliare un altro shop_id per rimanere un po ', ma sembra solo un sacco di script inutili.

Se hai un'idea simpatica e chiara, per favore, fammelo sapere.

È stato utile?

Soluzione

Questo è esattamente il genere di cose a cui servono le funzioni aggregate. Si crea una riga di output per ciascun gruppo di righe nella tabella. Raggruppali per shop_id e conta quante righe ci sono in ciascun gruppo.

select shop_id, count(1) from TABLE_NAME
  group by shop_id
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top