Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243

    Aiuto Query MySQL su 2 Database

    Ciao

    Ho una tabella nel 1° DB con nome cognome pc monitor stampante scanner


    Ho una tabella nel 2° DB con nome cognome area direzione servizio


    Mi servirebbe estrapolare una lista contente il numero di pc monitor stampanti e scanner divisi per direzione


    come posso fare indicativamente?

  2. #2
    codice:
    select *, count(t1.scanner) as scanner,
    count(t1.stampanti) as stampanti
    from db1.tab1 as t1
    inner join db2.tab2 as t2 ON t1.nome = t2.nome    /// o quel che l'e', cognome, id  ??? 
    where .... // se ne esistono di condizioni
    group by t2.direzione
    order by ....

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Grazie,

    Ho fatto qualcosa di questo tipo:



    SELECT


    t2.area, t2.assessorato, t2.direzione, COUNT(t1.pc) AS pc, COUNT(t1.monitor) AS monitor, COUNT(t1.stampante) AS stampante, COUNT(t1.scanner) AS scanner


    FROM archpc.archivio AS t1


    INNER JOIN elenco.dipendenti AS t2 ON (t1.cognome = t2.cognome AND t1.nome = t2.nome)


    GROUP BY t2.area, t2.assessorato, t2.direzione


    solo che mi conta praticamente tutte le righe pc monitor ecc.. questi campi contengono un id ma dato che viene compilato da una pagina web anche i campi non compilati passano da null a vuoto.. come posso fare?

  4. #4
    1) lasciare NULL i campi vuoti che non devono essere contati, correggi l'inserimento del campo vuoto o meglio elimina del tutto i campi NULL mettendoli *NOT NULL default '' *

    poi:

    2) where campo != ''

    se invece lasci dei campi NULL

    3) where campo != '' AND campo IS NOT NULL

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Sarebbe bello ma..

    allora i campi sono tutti vuoti ma essendo

    pc, monitor, stampante, scanner sulla stessa riga se anche uno dei 4 campi è vuoto non mi conta gli atri..

    ci andrebbe un count con qualche parametro..


    Ho anche aggiornato la query in questo modo per sostituire gli id con i nome dell'organigramma


    SELECT


    t3.nome AS area, t4.nome AS assessorato, t5.nome AS direzione, COUNT(t1.pc) AS pc, COUNT(t1.monitor) AS monitor, COUNT(t1.stampante) AS stampante, COUNT(t1.scanner) AS scanner


    FROM archpc.archivio AS t1


    INNER JOIN elenco.dipendenti AS t2 ON (t1.cognome = t2.cognome AND t1.nome = t2.nome)


    LEFT OUTER JOIN (elenco.aree AS t3) ON (t2.area = t3.id)
    LEFT OUTER JOIN (elenco.assessorati AS t4) ON (t2.assessorato = t4.id)
    LEFT OUTER JOIN (elenco.direzioni AS t5) ON (t2.direzione = t5.id)


    GROUP BY t2.area, t2.assessorato, t2.direzione

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Che ne pensi di questo approccio?
    Tanto la query mi serve solo per generare una "statistica" non diventa una query di programma..



    SELECT


    t3.nome AS area, t4.nome AS assessorato, t5.nome AS direzione, SUM(t1.pc/t1.pc) AS pc, SUM(t1.monitor/t1.monitor) AS monitor, SUM(t1.stampante/t1.stampante) AS stampante, SUM(t1.scanner/t1.scanner) AS scanner


    FROM archpc.archivio AS t1


    INNER JOIN elenco.dipendenti AS t2 ON (t1.cognome = t2.cognome AND t1.nome = t2.nome)


    LEFT OUTER JOIN (elenco.aree AS t3) ON (t2.area = t3.id)
    LEFT OUTER JOIN (elenco.assessorati AS t4) ON (t2.assessorato = t4.id)
    LEFT OUTER JOIN (elenco.direzioni AS t5) ON (t2.direzione = t5.id)


    GROUP BY t2.area, t2.assessorato, t2.direzione

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Ho ancora bisogno di aiuto..

    Supponiamo che la query sia questa:

    SELECT


    t1.cognome, t1.nome, t2.area, t2.direzione, SUM(t1.pc/t1.pc) AS pc, SUM(t1.monitor/t1.monitor) AS monitor, SUM(t1.stampante/t1.stampante) AS stampante, SUM(t1.scanner/t1.scanner) AS scanner


    FROM archpc.archivio AS t1


    INNER JOIN dipendenti.dipendenti AS t2 ON (t1.cognome LIKE t2.cognome AND t1.nome LIKE t2.nome)


    GROUP BY t1.id


    ORDER BY t2.area, t2.direzione, t1.cognome, t1.nome



    Ho i seguenti problemi..
    se volessi trovare i nomi e i cognomi che non MATCHANO con dipendenti.dipendenti come dovrei modificare le query?!

    Il secondo problema è che il database dipendenti contiene anche eventuali secondi nomi mentre in archivio sono stati compilati magari solo il primo o solo il secondo o primo e secondo.. come potrei fare? quancosa del tipo %t2.nome% ma non so come fare..

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    per il primo potrei usare il left outer join...


    per il secondo problema??

  9. #9
    mi son perso nella nebbia....

    che cosa sarebbe

    SUM(t1.pc/t1.pc) AS pc,
    SUM(t1.monitor/t1.monitor) AS monitor,
    SUM(t1.stampante/t1.stampante) AS stampante,
    SUM(t1.scanner/t1.scanner) AS scanner

    sara' che ho la testa con Babbo Natale.... ma non capisco quello che devi fare.

    Ho i seguenti problemi..
    se volessi trovare i nomi e i cognomi che non MATCHANO con dipendenti.dipendenti come dovrei modificare le query?!

    Il secondo problema è che il database dipendenti contiene anche eventuali secondi nomi mentre in archivio sono stati compilati magari solo il primo o solo il secondo o primo e secondo.. come potrei fare? quancosa del tipo %t2.nome% ma non so come fare..
    sarebbe opportuno dare piu' congruenza al database.... (forse)....
    .

    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.