[MySQL] Conteggio records su tabella relazionata

gbwebapps

Nuovo Utente
30 Giu 2017
7
0
1
55
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.204
207
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
55
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
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
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
D Emoji in mysql Database 0
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

Discussioni simili