[MySQL] Conteggio records su tabella relazionata

gbwebapps

Nuovo Utente
30 Giu 2017
7
0
1
52
Salve a tutti.
Sto sviluppando una applicazione di tipo catalogo, con il classico schema di tabelle:

- marche
- prodotti
- categorie
- cat_to_prod (tabella di join)

abbiamo quindi una relazione uno a molti fra le tabelle marche e prodotti
abbiamo poi una relazione molti a molti fra le tabelle categorie e prodotti attraverso la tabella di join cat_to_prod

fin qui tutto ok.

Vorrei adesso effettuare dei calcoli per offrire delle statistiche, specificatamente:
- le prime dieci marche con più prodotti
- le prime dieci categorie con più prodotti

qualcosa tipo:

1) samsung(59)
2) apple (37)
..... oppure ....
1)smartphones(12)
2)tablet(11)

non ho mai fatto questo tipo di elaborazioni, non ho idea nemmeno da dove iniziare.
Volevo chiedere se qualcuno potesse darmi il "la" da dove poter almeno iniziare a studiare.

Grazie a tutti

Giorgio
 

marino51

Utente Attivo
28 Feb 2013
3.064
195
63
Lombardia
supponendo che le tabelle "MARCHE" e "PRODOTTI", contengano un "IDmarca" comune
puoi scrivere,
PHP:
    SELECT t1.marca, count(t2.IDmarca) as counter
      FROM marche t1
RIGHT JOIN prodotti t2
        ON t1.IDmarca = t2.IDmarca
  GROUP BY t1.marca
  ORDER BY counter desc, t1.marca
che estrae la lista delle marche che hanno prodotti collegati quindi con counter > 0
se volessi usare LEFT JOIN, ti estrarrebbe tutte le marche, anche quelle senza prodotti collegati

ORDER BY lo aggiusti secondo necessità, ordine per numero maggiore di prodotti (come esempio)
oppure ordine alfabetico della marca

ho usato t1 e t2 come alias delle tabelle per rendere più facile (credo) applicare il metodo ad altri conteggi

ps, l'estrazione dei primi 10 dipende dal database usato,
per mysql devi usare la clausola LIMIT
per mssql vale la clausola TOP
 
Ultima modifica:

gbwebapps

Nuovo Utente
30 Giu 2017
7
0
1
52
Ciao, funziona perfettamente!

L'ho trasformato secondo le mie esigenze così:

public function count_brands()
{
$sql = 'SELECT brands.brand, count(products.brand_id) as counter
FROM brands
RIGHT JOIN products
ON brands.id = products.brand_id
GROUP BY brands.brand
ORDER BY counter DESC, brands.brand';

$query = $this->db->query($sql);

return $query->result();
}

ed anche la parte apparentemente più complessa visto che richiama una parte di join, funziona allo stesso modo:

public function count_categories()
{
$sql = 'SELECT categories.category, count(categories_to_product.product_id) as counter
FROM categories
RIGHT JOIN categories_to_product
ON categories.id = categories_to_product.product_id
GROUP BY categories.category
ORDER BY counter DESC, categories.category';

$query = $this->db->query($sql);

return $query->result();
}


Ti ringrazio molto.

p.s. sai consigliarmi un libro esaustivo e moderno su MYSQL/SQL

Grazie

Giorgio
 
Discussioni simili
Autore Titolo Forum Risposte Data
F conteggio data come su facebook php/mysql PHP 7
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
T differenza fra mysql xampp e un mysql server Database 0
R Importazione csv su mysql tramite array PHP 2
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
D problema php mysql PHP 1
D problema php mysql PHP 1
N Server mysql non raggiungibile da connessione esterna MySQL 1
B Crea pdf da tabella mysql "ultima riga modificata" MySQL 4
D evitare di inserirre duplicati in mysql PHP 4
L salvare codice html in mysql PHP 3
L Google chart php mysql PHP 2
S Gestire scelta dropdown con dati da Mysql PHP 2
K cron job mysql PHP 3
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
R Errore UPDATE tabella mysql PHP 1
R Caricamento immagine su cartella remota + mysql PHP 3
L Aiuto per programma web php/mySQL PHP 2
S Problema esportazione tabelle Mysql in Excel PHP 0
S Cancellare una riga MYSQL PHP 1
L Ricerca valore mysql e incremento PHP 73
G database mysql contengono informazioni ? MySQL 0
G Testo in mysql format 3 MySQL 0
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
G inserire dati automaticamente in mysql PHP 0
A Importare array in mysql PHP 1
C Aiuto compiuto scuola PHP/MySQL PHP 2
FabioJ [mysql] importazione csv o json o excel Database 0
L scaricare MySQL MySQL 2
G Rendere dati di una tabella mysql link PHP 22
G eseguire calcoli matematici su risultati 2 tabelle mysql PHP 4
S filtrare database mysql MySQL 3
G Problema caricamento tabelle MySql da PhP PHP 0

Discussioni simili