Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    23

    [MYSQL] ricerca incrociata su gruppi di record

    Salve a tutti,

    la mia situazione è la seguente: ho un certo numero noto di gruppi, poche decine, ogni gruppo è costituito da varie parti identificate da un codice, le parti sono conservate in posti anch'essi identificati da un codice, le parti sono un migliaio, divise in circa 80-100 per gruppo e i posti sono dell'ordine delle centinaia.

    La struttura è composta da una tabella che identifica le parti costituenti dei gruppi e da una seconda tabella che indica dove è posta ogni parte.

    Finora abbiamo sempre lavorato con le singole parti ma adesso si vuole utilizzare il concetto di gruppo.


    Faccio un esempio:

    GRUPPI
    codice gruppo parti costituenti
    1 A
    1 B
    1 C
    2 D
    2 E
    3 F
    3 G

    ossia il gruppo 1 è composto dalle parti A,B e C e così via

    PARTI
    codice parte posto
    A 1
    B 1
    C 1
    A 1
    B 1
    C 1
    A 1
    D 1
    E 1
    A 2
    B 2
    C 2
    D 2
    E 3
    quindi ci sono tre parti A nel posto 1 e una nel posto 2.

    Ho bisogno di sapere dove si trovano i gruppi e viceversa ogni posto quali gruppi contiene. Dall'esempio risulta che il gruppo 1 composto dalle parti A,B,C si trova nel posto 1 in due copie e nel posto 2 in una copia; nel posto 1 c'è anche il gruppo 2 con componenti D e E. Viceversa il gruppo 1 si trova in due copie nel posto 1 e in una copia nel posto 2.

    In teoria un gruppo dovrebbe trovarsi completo in un posto ma nella pratica non avviene sempre, infatti nell'esempio abbiamo un componente A nel posto 1 senza i corrispondenti componenti B e C a completamento del gruppo, anche il gruppo 2 risulta incompleto nel posto 3 che contiene solo la parte E senza la D.

    In sintesi ogni posto può contenere più gruppi, e di ogni gruppo esistono indeterminate copie contenute nello stesso posto o in posti diversi.

    Tralasciando i casi di gruppi incompleti, come posso conoscere con una query in mysql il posto di ogni gruppo e quali gruppi ci sono in ogni posto?

    Grazie
    Ultima modifica di palmico; 05-10-2019 a 11:27

  2. #2
    Io procederei effettuando un raggruppamento della seconda tabella per posto e parte, che conti quante occorrenze ci sono di una data parte in ciascun posto; per esempio, questo mi direbbe A : 3, B : 2, c: 2, D :1, E: 1 per il posto 1 e così via.

    Al risultato di questa query farei una join verso la tabella 1, per avere accanto a ciascun pezzo il gruppo a cui appartiene, dopodichè farei un ulteriore raggruppamento per gruppo calcolando il minimo dei valori di cui sopra all'interno del gruppo;per capirci, nell'esempio avrei:
    ABC (gruppo1): 2, DE (Gruppo2): 1 , naturalmente tutto questo sempre nell'ambito di ciascuno posto.

    Direi che a questo punto hai ciò che volevi: posto 1, gruppo 1, 2; posto1, gruppo 2, 1....

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    23
    Grazie Shores,

    se non hai di meglio da fare vorrei approfittare ancora della tua disponibilità, questa è la query che ho preparato seguendo i tuoi suggerimenti, ma temo di essermi perso qualcosa perché non ottengo i risultati corretti:

    codice:
    SELECT gruppo, posto, parte, min(qta) minimo FROM 
        (
            SELECT parte, posto, gruppo, count(*) qta FROM parti p 
            JOIN gruppi g ON p.parte=g.parte GROUP BY p.posto, p.parte
        ) s 
        GROUP BY gruppo ORDER BY gruppo, posto, parte

  4. #4
    Quel che ti proponevo era:

    codice:
    SELECT gruppo, posto, min(qta) minimo FROM 
        (
            SELECT parte, posto, count(*) qta FROM parti p 
    GROUP BY p.posto, p.parte
        ) s 
            JOIN gruppi g ON s.parte=g.parte 
        GROUP BY posto, gruppo ORDER BY posto, gruppo
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    23
    Ancora grazie Shores,
    purtroppo neanche così ottengo i dati corretti, ma non preoccuparti mi interessava soprattutto capire la logica anche perché ora mi hanno cambiato le specifiche e lavoriamo con gruppi incompleti, ciao

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.