Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767

    Query per lista con conteggio interno

    Ciao!

    Script per gallerie di immagini.
    Nella stessa tabella memorizzo sia le cartelle sia le immagini (o i file multimediali, poco cambia).
    Li distinguo usando il campo Type che è di tipo enum('folder','image','audio','video')

    Quando visualizzo le cartelle uso una query del tipo

    SELECT * FROM Gallery WHERE Type="folder"

    vorrei che potesse restituire tra i valori di ogni record anche il numero di file che ogni galleria contiene e che di solito ottengo così

    SELECT COUNT() FROM Gallery WHERE Id='1'

    Come faccio a mettere insieme queste due query in una query unica che abbia per ogni record tutti i campi di ogni galleria ed il numero dei file che essa contiene?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    se non ho capito male tu per ogni file hai un campo che ne indentifica il tipo e vorresti quindi che venga indicato
    folder 4 file
    img 5 file
    una cosa di queste?
    allora dovresti fare una query che dovrebbe recitare cosi
    Codice PHP:
    $querymysql_query("SELECT *, COUNT(*) as tot From tabella Where le condizioni che vuoi GROUP BY Type"); 

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    ..secondo me cerca la stessa cosa che cerco io..
    l'ho chiesta proprio ieri mattina nel forum DB, visto che SOLO di query si tratta..
    http://forum.html.it/forum/showthrea...readid=1467815

    a me nn ha filato nessuno..

  4. #4
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Non è proprio così. Cerco di spiegarmi meglio:

    Immagina di memorizzare un tree a due livelli (folder e file) in una sola tabella. Quando cerco con la query tutti gli elementi di primo livello (folder) vorrei che la query mi restituisse anche il numero dei sottoelementi (file).

    Devo fare tutto con una sola query.

  5. #5
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Ho trovato questa

    Codice PHP:
    SELECT *, (SELECT Count(IdFROM Gallery WHERE ParentId=G1.Id) as NumeroImmagini FROM Gallery G1 WHERE ParentId=
    tra un po' la provo e vi faccio sapere, magari serve a qualcuno

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    la soluzione potrebbe essere identica, la questione è simile: contare elementi in una query.. ho provato la soluzione che dici ma se metti group by ti dice che la subquery contiene più di un valore. se non lo mettii valori della colonna NumeroImmagini sono tutti identici.. almeno nel mio caso, ma a naso non dovrebbe scostarsi il risultato..

  7. #7
    Una self join in genere ha performance molto migliori di una subquery. Prova qualcosa di questo genere:

    codice:
      SELECT a.name, COUNT(b.name) AS num
        FROM Gallery AS a LEFT JOIN Gallery AS b
          ON b.parentid = a.id
       WHERE a.type = 'folder'
    GROUP BY b.parentid;
    aggiusta i nomi dei campi

    Comunque sposto in database, di PHP qui non c'e' nulla.

  8. #8
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Grazie!

    Mi sembra un'ottima soluzione, adesso ci lavoro un po'

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.