Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di JoeP
    Registrato dal
    May 2004
    Messaggi
    558

    [MySQL] Aiuto, per query complesse...

    Ciao a tutti.

    Ho bisogno di sommare alcuni valori di un campo di una tabella, ma la cosa non è semplice come sembra, perchè una normale condizione WHERE non mi pare possa funzionare.
    Vi spiego il problema con un esempio, nel quale semplifico al massimo la struttura delle tebelle coinvolte...
    Ho una tabella TabNews con i campi id (chiave primaria), autore, titolo, idSezione, visite. Il campo idSezione si riferisce ad un'altra tabella TabSezioni con i campi id (chiave primaria), nome, attiva (booleana 0/1). In pratica sono delle news raggrupate in varie sezioni.
    Ora, a me servirebbe sommare il numero di visite di tutte le news scritte da un certo autore, ma considerando solo quelle la cui sezione abbia il campo attiva con valore 1.
    Se non ci fosse la complicazione delle sezioni attive o meno, potevo fare una query del tipo SELECT SUM(`visite`) FROM TabNews WHERE `autore` = 'paolo rossi', ma invece devo poter escludere dalla somma le news che appartengono a una categoria non attiva (e questo info sta in un'altra tabella come ho detto).

    Spero mi possiate aiutare,
    Lorenzo.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Dovrebbe essere così.
    codice:
    SELECT SUM(`visite`) FROM TabNews
    inner join tabsezioni on tabNews.idSezione = tabsezioni.id
    WHERE tabNews.autore = 'paolo rossi'
    and tabSezioni.attiva = 1

  3. #3
    Utente di HTML.it L'avatar di JoeP
    Registrato dal
    May 2004
    Messaggi
    558
    Originariamente inviato da nicola75ss
    Dovrebbe essere così.
    codice:
    SELECT SUM(`visite`) FROM TabNews
    inner join tabsezioni on tabNews.idSezione = tabsezioni.id
    WHERE tabNews.autore = 'paolo rossi'
    and tabSezioni.attiva = 1
    Devo essermi perso qualcosa nello studio dell'SQL...
    Infatti, adesso mi leggo http://database.html.it/guide/lezion...so-delle-join/
    Grazie mille!

  4. #4
    Utente di HTML.it L'avatar di JoeP
    Registrato dal
    May 2004
    Messaggi
    558
    Ho risolto con la query indicata da nicola75ss, ma ora vorrei fare una cosa "in più".

    In pratica con la query precedente calcolo il numero di visite agli articoli attivi di un certo autore, mentre ora vorrei sapere come generare con una solo QUERY una tabella con tutti gli autori e, per ognuno, il numero di visite ai suoi articoli attivi.
    In pratica deve essere una tabella con tante righe quanti sono gli autori e in cui ogni riga sia un risultato della query precedente.

    E' possibile? Magari anche con Subquery oltre le JOIN, non so...

    Grazie mille

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select tn.autore,sum(tn.visite) as totale from tabnews as tn
    inner join tabsezioni as ts on tn.idSezione = ts.id
    where ts.attiva = 1
    group by tn.autore

  6. #6
    Utente di HTML.it L'avatar di JoeP
    Registrato dal
    May 2004
    Messaggi
    558
    Ottimo! Funziona perfettamente, grazie mille ancora!

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.