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

    [MySQL] Visualizzare record con risultato COUNT 0

    Ciao a tutti.

    Ho 2 tabelle, regioni_province e immagini.

    regioni_province
    codice:
    CREATE TABLE IF NOT EXISTS `regioni_province` (
      `id_provincia` tinyint(4) NOT NULL auto_increment,
      `denominazione_regione` varchar(30) NOT NULL,
      `denominazione_provincia` varchar(30) NOT NULL,
      `sigla_automobilistica` varchar(2) NOT NULL,
      PRIMARY KEY  (`id_provincia`)
    immagini
    codice:
    CREATE TABLE IF NOT EXISTS `immagini` (
      `id` int(11) NOT NULL auto_increment,
      `provincia` varchar(2) NOT NULL,
      `titolo` varchar(64) NULL,
      `descrizione` varchar(255) NULL,
      `nome` varchar(255) NOT NULL,
      `nome_originale` varchar(255) NOT NULL,
      `data_upload` timestamp NOT NULL default '0000-00-00 00:00:00',
    Questa query mi restituisce il numero di record presenti nella tabella immagini, ordinate per provincia.
    N.B. i campi regioni_province.sigla_automobilistica e il campo immagini.provincia hanno lo stesso formato (es: RM, MI, PG, TR ecc..)
    codice:
    SELECT regioni_province.denominazione_provincia, regioni_province.sigla_automobilistica, COUNT( regioni_province.sigla_automobilistica ) AS foto
    FROM regioni_province
    INNER JOIN immagini ON regioni_province.sigla_automobilistica = immagini.provincia
    GROUP BY regioni_province.denominazione_provincia;
    Il problema è che così facendo vengono visualizzate solo le province che sono presenti almeno una volta nella tabella immagini. Io invece vorrei che mi restituisse TUTTE le province, anche quelle che non sono dentro immagini.

    Come posso fare?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    usa left join anzichè inner join

  3. #3
    Ci ho provato e mi dà un risultato totalmente sballato,

    COUNT( regioni_province.sigla_automobilistica ) AS foto

    è sempre = 1 e non corrispondono neanche le province con quelle presenti su immagini...

  4. #4
    Ho provato anche così:
    codice:
    SELECT regioni_province.denominazione_provincia, regioni_province.sigla_automobilistica, COUNT( regioni_province.sigla_automobilistica ) AS foto
    FROM regioni_province
    LEFT OUTER JOIN immagini ON regioni_province.sigla_automobilistica = immagini.provincia
    WHERE regioni_province.sigla_automobilistica = immagini.provincia
    GROUP BY regioni_province.denominazione_provincia
    ORDER BY regioni_province.denominazione_provincia
    Ed ecco il risultato:

    http://img9.imageshack.us/img9/7276/querye.png

    Così va bene, ma non c'è verso di visualizzare anche i record con foto = 0...



    EDIT: scusate per il doppio post, comunque ho risolto!

    codice:
    SELECT a.denominazione_provincia, a.sigla_automobilistica, COUNT( b.provincia ) AS foto FROM regioni_province AS a LEFT JOIN immagini AS b ON a.sigla_automobilistica = b.provincia GROUP BY a.denominazione_provincia LIMIT 0 , 110
    sbagliavo nel conteggio, è bastato sostituire COUNT( a.sigla_automobilistica )
    con COUNT( b.provincia )

    ciao

  5. #5
    conta le immagini e non le province.

    Di province ne hai sicuramente almeno 1.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.