Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    SQL - Order by Quantità

    Salve a tutti,
    ho una tabella "citta" ed una tabella "clienti".

    Nella tabella clienti ho un campo "idcitta" di tipo INT con all'interno il numero della città di riferimento.

    Come faccio, con una query, a conoscere ad esempio le prime 5 città più "gettonate" (quindi le più utilizzate nella tabella "clienti")?

    Grazie in anticipo...

  2. #2
    Ciao Stefanuccio,

    Lo fai con SELECT MAX

    Codice PHP:
    SELECT maxidcitta FROM `citta

  3. #3
    Ciao dovresti creare una query di questo tipo:
    Codice PHP:
    SELECT count(*) as ct,idcitta 
    FROM  tabella_utenti J 
    INNER JOIN tabella_citta C ON C
    .idcitta =J.citta_id 

    in modo tale da contare le città partendo da una base di tabella utenti e facendoli un inner join sulla tabella città..
    Oppure puoi usare la select max
    Codice PHP:
    SELECT maxcitta_idFROM 'tabella_citta' 
    Spero di esserti stato di aiuto
    Marko

  4. #4
    Grazie a tutti, ho effettuato delle prove ma non riesco a risolvere.
    Vi posto la struttura delle tue tabelle così come effettivamente sono.

    codice:
    CREATE TABLE `sux_clienti` (
      `id` int(6) NOT NULL auto_increment,
      `nome` varchar(100) NOT NULL,
      `cognome` varchar(100) NOT NULL,
      `sms` varchar(100) NOT NULL,
      `smsx` int(6) NOT NULL,
      `email` varchar(200) NOT NULL,
      `emailx` int(6) NOT NULL,
      `datanasc` date NOT NULL,
      `sesso` int(6) NOT NULL,
      `comune` int(6) NOT NULL,
      `indirizzo` varchar(200) NOT NULL,
      `servizi` varchar(200) NOT NULL,
      `discipline` varchar(200) NOT NULL,
      `apparecchiature` varchar(200) NOT NULL,
      `censito` date NOT NULL,
      PRIMARY KEY  (`id`)
    );
    
    
    CREATE TABLE `sux_citta` (
      `id` int(6) NOT NULL auto_increment,
      `nome` varchar(100) NOT NULL,
      PRIMARY KEY  (`id`)
    );
    chiaramente "comune" di sux_clienti contiene l'id di sux_citta

    Forse così è più chiaro :-)

  5. #5
    Codice PHP:
    SELECT DISTINCT
    Max
    (sux_citta.id),
    sux_citta.nome,
    sux_clienti.id
    sux_clienti
    .comune
    FROM
    sux_citta
    INNER JOIN sux_clienti ON sux_clienti
    .comune sux_citta.id
    GROUP BY
    sux_citta
    .nome 

  6. #6
    Mmm... non è proprio quello che cercavo !
    Ho creato un piccolo script in PHP che lavora su una tabella temporanea (sux_citta_stat) e da lì mi genero i dati di cui ho bisogno:

    codice:
    mysql_query("TRUNCATE TABLE sux_citta_stat");
    $res = mysql_query("SELECT * FROM sux_citta ORDER by nome ASC");
    while($row = mysql_fetch_array($res)){
    $ris = mysql_query("SELECT * FROM sux_clienti WHERE comune=$row[id]",$conn);
    $ris = mysql_num_rows($ris);
    mysql_query("INSERT INTO `sux_citta_stat` (`id` ,`nome` ,`qnt`)VALUES (NULL ,  '$row[nome]', '$ris')");
    }
    
    echo "Le 10 città più utilizzate sono:
    \n";	
    $res = mysql_query("SELECT * FROM `sux_citta_stat` ORDER by qnt DESC LIMIT 10");
    while($row = mysql_fetch_array($res)){
    echo "$row[nome], con $row[qnt] clienti;
    \n";
    }
    Grazie comunque a tutti... se avete qualcosa di più semplice con un'uncia query, ben lieto di utilizzarla.

  7. #7
    Forse qualcosa del genere va meglio?

    Codice PHP:
    SELECT DISTINCT
    Count
    (sux_citta.id),
    sux_citta.nome
    FROM
    sux_citta
    INNER JOIN sux_clienti ON sux_clienti
    .comune sux_citta.id
    GROUP BY
    sux_clienti
    .comune,
    sux_citta.nome 
    Risultato
    Codice PHP:
    Clienti Totali       Clienti Città
    2                    Roma
    1                    Firenze 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.