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

    [MySQL Esperti] Query tra 5 tabelle

    Salve a tutti.
    Devo rimettere mano ad una sezione di amministrazione di un sito non costruito da me per cui, visto che non posso andare a ricostruire tutto il sito (pubblico) sono costretto ad utilizzare le tabelle che ho già ed i nomi delle varie colonne disponibili.
    Il pannello di amministrazione prevede 4 differenti livelli di utenza, per cui alcuni utenti hanno la possibilità di aggiungere più tipi di contenuti rispetto ad altri.
    La prima pagina del pannello prevede una sorta di riepilogo di tutti i contenuti aggiunti dall'utente in questione.
    Qui nasce il mio problema.
    Di seguito il codice SQL che pensavo funzionare: una query che conta quanti contenuti sono stati aggiunti, in ogni tabella, dall'utente che visualizza il proprio pannello di amministrazione.
    Codice PHP:
    $sql "
        SELECT COUNT(table1.id) AS a, 
        COUNT(table2.id) AS b,
        COUNT(table3.id) AS c,
        COUNT(table4.id) AS d,
        COUNT(table5.id) AS e
        FROM table1, table2, table3, table4, table5
        WHERE table1.autore = '"
    .$_SESSION['identificativo_utente']."'
        OR table2.autore = '"
    .$_SESSION['identificativo_utente']."'
        OR table3.autore = '"
    .$_SESSION['identificativo_utente']."'
        OR table4.autore = '"
    .$_SESSION['identificativo_utente']."'
        OR table5.autore = '"
    .$_SESSION['identificativo_utente']."'
    "

    Eseguendo la query, però, ottengo per ogni COUNT uno 0 (anche dove so che esistono riscontri per quell'utente), e non riesco a capire dove sta il mio errore.
    Chi mi può dare una mano??? Vorrei evitare, nei limite del possibile, di eseguire 5 query!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  2. #2
    UP
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    UP

    Approfitto di un up per specificare che ogni tabella (come si vede dallo script SQL) ha una colonna 'autore', ma non è detto che ogni autore abbia inserito almeno un contenuto per ogni colonna.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    Originariamente inviato da alcio74
    UP

    Approfitto di un up per specificare che ogni tabella (come si vede dallo script SQL) ha una colonna 'autore', ma non è detto che ogni autore abbia inserito almeno un contenuto per ogni colonna.

    non mi viene alcun senso associabile alla tua query.

    fai una select per tabella associate con union.

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

  5. #5
    :master:
    In effetti, più ci penso e più credo che sia impossibile fare una query unica.
    Ora spippolo un po' con UNION e poi torno a postare.
    Per ora grazie.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Grande Piero, sei sempre il numero 1.
    Ho risolto con UNION ALL.

    Codice PHP:
    $sql "
    (SELECT COUNT(tbl1.id) AS result FROM tbl1 WHERE tbl1.autore = '"
    .$_SESSION['utente']."' AND tbl1.vis = 0)
    UNION ALL
    (SELECT COUNT(tbl2.id) FROM tbl2 WHERE tbl2.autore = '"
    .$_SESSION['utente']."' AND tbl2.vis = 0)
    UNION ALL
    (SELECT COUNT(tbl3.id) FROM tbl3 WHERE tbl3.autore = '"
    .$_SESSION['utente']."' AND tbl3.vis = 0)
    UNION ALL
    (SELECT COUNT(tbl4.id) FROM tbl4 WHERE tbl4.autore = '"
    .$_SESSION['utente']."' AND tbl4.vis = 0)
    UNION ALL
    (SELECT COUNT(tbl5.id) FROM tbl5 WHERE tbl5.autore = '"
    .$_SESSION['utente']."' AND tbl5.vis = 0)
    "

    Ho qualche difficoltà a gestire l'output con PHP, ma sto facendo del mio meglio!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.