Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Query Complessa?

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    55

    Query Complessa?

    qualcuno sa dirmi una query per ottenere il seguente risultato...



    Tabella A {idA}
    Tabella A_pezzi {idA_pezzo, idA, codice}

    Tabella B {idB}
    Tabella B_pezzi {idB_pezzo, idB, codice}


    Dato un record di A fisso voglio tutti i record di B che hanno gli stessi pezzi di A o anche di più (A_pezzi e B_pezzi hanno un campo in comune che identifica il pezzo).

    VVoVe:

  2. #2
    A dire il vero temo di non aver capito chiaramente come funzionano le due tabelle e che relazione ci sia tra esse, però, ad occhio, ti posso dire che ti basta una JOIN, ovviamente usando come relazione i giusti campi (che, ripeto, non ho ben capito quali siano).

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    55
    tabella A
    campi:
    ID primary key

    tabella A_pezzi
    campi:
    ID primary key
    ID_A references A.ID
    CODICE

    tabella B
    campi:
    ID primary key

    tabella B_pezzi
    campi:
    ID primary key
    ID_B references B.ID
    CODICE

    Qualcosa del genere...

    Ogni oggetto A può aver associati N pezzi (tabella A_pezzi) la stessa cosa vale per B (e B_pezzi)
    I codici di B_pezzi e A_pezzi possono essere gli stessi quindi posso fare il join tra quelle tabelle.
    Quello che mi interessa è ottenere, dato un oggetto A, gli oggetti di tipo B che hanno almeno gli stessi pezzi dell'oggetto A dato...

  4. #4
    Utente di HTML.it L'avatar di hyb
    Registrato dal
    Aug 2003
    Messaggi
    424
    ho capito il problema, ma non le tabelle.
    ad ogni modo (osserva la struttura della query, e metti i campi idonei):


    SELECT * FROM
    tabapezzi, tabbpezzi
    WHERE
    tabapezzi.pezzi = tabbpezzi
    AND [campo che vuoi per raffinare il join=> in questo caso un oggetto x della tabella A] tabapezzi.idoggetto = 'x'
    C'è chi si mette degli occhiali da sole, per avere più carisma e sintomatico mistero.

  5. #5
    La mia soluzione, invece, sarebbe una JOIN

    SELECT A.id AS oggetto_a, D.id AS oggetto_b, B.codice AS codice_A, C.codice AS codice_B
    FROM oggettia AS A
    JOIN a_pezzi AS B
    ON A.id = B.id_oggetto
    JOIN b_pezzi AS C
    ON B.codice = C.codice
    JOIN oggettib AS D
    ON C.id_oggetto = D.id
    WHERE A.id ='1'

  6. #6
    Utente di HTML.it L'avatar di hyb
    Registrato dal
    Aug 2003
    Messaggi
    424
    Originariamente inviato da thunderlips
    La mia soluzione, invece, sarebbe una JOIN

    SELECT A.id AS oggetto_a, D.id AS oggetto_b, B.codice AS codice_A, C.codice AS codice_B
    FROM oggettia AS A
    JOIN a_pezzi AS B
    ON A.id = B.id_oggetto
    JOIN b_pezzi AS C
    ON B.codice = C.codice
    JOIN oggettib AS D
    ON C.id_oggetto = D.id
    WHERE A.id ='1'
    ma quanti join? anche quello di prima era un join...
    poi perché due tabelle con due sole chiave primarie, che senso hanno? :master:
    C'è chi si mette degli occhiali da sole, per avere più carisma e sintomatico mistero.

  7. #7
    Semplicemente ho ricreato la sua situazione e ho cercato di trovare una soluzione al suo problema.
    Poi il perché l'abbia strutturato così chiedilo a lui, poi magari non ho capito cosa intendeva, ma leggendo il suo post mi sembra di aver capito che ha due tabelle diverse con vari oggetti in ciascuna. Ogni pezzo di ogni tabella ha diversi pezzi relazionati ad ogni oggetto. Alcuni pezzi sono sia pezzi relativi alla prima che alla seconda tabella di oggetti. Questa relazione viene fatta in base ad un campo codice che è identico in entrambe le tabelle dei pezzi.

  8. #8
    Utente di HTML.it L'avatar di hyb
    Registrato dal
    Aug 2003
    Messaggi
    424
    allora abax, se la tabella oggetti => pezzi ha una relazione 1 a 1... uniscile.. altrimenti non hanno senso
    C'è chi si mette degli occhiali da sole, per avere più carisma e sintomatico mistero.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    55
    LE tabelle A e B hanno anche altri campi (nome ecc) ma non li ho messi per brevità

    Con quella query otterrei si delle righe che rappresentano A_pezzi che sono anche B_pezzi
    ma non riesco a vedere se tutti i pezzi dell'oggetto A sono gli stessi di quelli di un oggetto B

    Se A possiede i pezzi (p1,p2,p3)

    ed ho ad esempio 3 oggetti B

    B1 (p1,p2,z1)
    B2 (p1,p2,p3)
    B3 (p1,p2,p3,z1)

    Vorrei come risultato B2, B3 e non B1

  10. #10
    E a te chi l'ha detto che la relazione è 1:1?
    Ogni oggetto può avere molteplici pezzi...

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.