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

    [mysql] query per visualizzazione raggruppata

    ciao

    un cliente (di quelli a cui ti piacerebbe tirare ben bene il collo...) mi ha fatto una richiesta abbastanza critica a progetto quasi finito, in pratica...semplificando io ho 2 tabelle

    codice:
    tabella prodotti
    
    -codice
    -descrizione
    -prezzo
    codice:
    tabella relazioni files
    
    -codice
    -id_file
    -tipo_file
    lui ora può fare delle ricerche sulla tabella prodotti, ne trova ad esempio 250, a questi 250 prodotti associa un file che comparirà nel dettaglio di tutti i 250 prodotti.

    fino a qui tutto ok...

    supponiamo di fare la stessa cosa con 3 gruppi
    A (250)
    B (100)
    C (300)

    ora io faccio una ricerca sulla tabella dei prodotti e ne trovo 100 (50 che sono in A, 40 in B e 10 in C)

    la modifica dovrebbe permettere di elencare i 100 prodotti raggruppati, ad esempio

    img gruppo A
    ....prodotti A

    img gruppo B
    .....prodotti B

    img gruppo C
    .... prodotti C


    come posso fare questa cosa senza uccidere mysql di query?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    3 query non hanno mai ucciso nessun database...

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

  3. #3
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Ma c'è una relazione tra il codice nella tabella di relazione files e nella tabella dei prodotti?
    Perchè se è così, nello scenario che ci hai descritto, le immagini nel database sarebbero 3 e non si capisce per quale motivo dovresti "uccidere" mysql dato che basta una semplice join.

  4. #4
    semplificando
    in realtà la tabella dei prodotti è di 20 campi e contiene circa 15000 prodotti

    vi saranno più o meno 200-300 gruppi (e continueranno a crescere, 300 gruppi con una media di 50 prodotti...)

    il mio era un esempio per capire la logica di presentazione dei risultati della ricerca

    il problema è:

    come raggruppo i record trovati nella tabella prodotti in relazione al fatto che appartengano o no allo stesso gruppo?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  5. #5
    Sono di fatto 3 query. Non c'entra JOIN o non JOIN.
    O fai tre query oppure usa UNION e metti le tre query a scalare.

    LIMIT funziona solo per il complessivo che estrai per singola query e non per il parziale dei singoli valori della query.
    codice:
    (select * from uno
    join....
    where....
    order by...
    limit 100)
    UNION
    (select * from uno
    join....
    where....
    order by...
    limit 100)
    UNION
    ecc....

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

  6. #6
    ok, però scusami ma io non capisco


    - codice
    - id_file
    - tipo_file

    dove

    codice è la chiave di un'altra tabella
    id_file è la chiave della tabella dei file o delle foto
    tipo_file ha valori 1 o 2 a seconda del tipo di id che c'è in id_file (se è file o foto)

    per capirci se la tabella contiene questi record:
    codice:
    codice   | id_file | tipo_file |
        aa4  |       1 |         2 |
         34  |       1 |         2 |
         4s  |       1 |         2 |
         s4  |       1 |         2 |
        ss4  |       1 |         2 |
        aaa  |       2 |         2 |
         bb  |       2 |         2 |
         cc  |       2 |         2 |
        ddd  |       2 |         2 |
        eee  |       2 |         2 |
         22  |       1 |         1 |
        777  |       1 |         1 |
        999  |       1 |         1 |
    io ho 3 gruppi :

    gruppo 1
    codice:
        aa4  |       1 |         2 |
         34  |       1 |         2 |
         4s  |       1 |         2 |
         s4  |       1 |         2 |
        ss4  |       1 |         2 |
    gruppo 2
    codice:
      aaa  |       2 |         2 |
         bb  |       2 |         2 |
         cc  |       2 |         2 |
        ddd  |       2 |         2 |
        eee  |       2 |         2 |
    gruppo 3
    codice:
         22  |       1 |         1 |
        777  |       1 |         1 |
        999  |       1 |         1 |
    come posso elencarli in questo modo? grazie
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  7. #7
    se fai una union sulla stessa tabella elencando ogni volta il diverso criterio di ricerca i dati vengono accodati ed ottieni i tuoi dati nell'ordine specificato nel where.

    E' inutile che elenchi i dati... non si capisce cos'e' che contraddistingue i gruppi... o forse ti manca un campo dove sia definito il gruppo di appartenenza del dato.

    select
    from tabella
    join altra tabella
    WHERE gruppo = 1
    union
    select...
    ...
    where gruppo = 2
    union
    select...
    ...
    where gruppo = 3

    questo e' il nesso. Se i dati non sono raggruppati in modo omogeneo come fai a distinguerli.

    Guarda bene cosa hai postato.... quale il criterio di aggregazione che hai usato... ??? io non lo capisco o non lo trovo.

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

  8. #8
    oh, finalmente ci siamo capiti

    il problema è che io non ho un criterio di raggruppamento! vorrei crearmelo in modo dinamico a partire da quella tabella quando il campo id_file e tipo_file sono uguali!
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

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 © 2026 vBulletin Solutions, Inc. All rights reserved.