Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560

    [SQL] Visualizzare più campi di una tabella collegata con Join

    Ciao a tutti,
    non riesco a scrivere una istruzione SQL per far visualizzare i dat come dico io... ora provo a spiegarvi cosa mi serve...

    ho due tabelle: articoli e colori

    Nella tabella articoli sono memorizzati più articoli di un magazzino. Ogni articolo tra i vari campi ha 6 campi per il colore. Ogni campo colore è numerico e indica il codice di uno dei colori della tabella colori.

    Se faccio l'INNER JOIN tra uno dei campi colore e la tabella colori il risultato è quello che mi serve, ovvero sapere il nome del colore.

    codice:
    SELECT catalogo.id, catalogo.nome, catalogo.color1, colori.descr
    FROM catalogo INNER JOIN colori ON catalogo.color1 = colori.codice

    Il problema è che devo sapere il nome del colore specificato per ognuno dei 6 campi dell'articolo e vorrei farlo con una sola interrogazione al db. E' possibile?

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    codice:
    SELECT catalogo.id, catalogo.nome, catalogo.color1, colori.descr, colori2.descr, colori3.descr
    FROM ((catalogo INNER JOIN colori ON catalogo.color1 = colori.codice) INNER JOIN colori AS colori2 ON catolog.color2 = colori2.codice) INNER JOIN colori AS colori3 ON catolog.color3 = colori3.codice
    S'i fosse foco, arderei 'l mondo

  3. #3
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    mmmm non ho più tabelle colori, ho una tabella catalogo con più campi che indicano il colore:
    catalogo.colore1
    catalogo.colore2
    catalogo.colore3

    nella tabella colori invece ho:
    colori.codice
    colori.descr

    devo quindi far corrispondere ad ogni catalogo.colorex una descrizione. Per ora l'ho fatto con 3 interrogazioni separate al database, vorrei ottimizzare e farlo solo con una...

    grazie mille

  4. #4
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    non ti servono più tabelle colori

    le puoi usare 100 volte nella stessa join con alias diversi (colori AS colori2, colori AS colori3)
    S'i fosse foco, arderei 'l mondo

  5. #5
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    ops... hai ragione mi era scappato l'AS... grazie! Provo subito...

    grazie ancora

  6. #6
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    OK, grazie, funziona perfettamente. Ho solo utilizzato il LEFT JOIN perchè alcuni campi catalogo.colorex non hanno valore.
    Visto che i campi catalogo.colorex sono 12 e di conseguenza la query risulta decisamente complessa con ben 12 LEFT JOIN.
    Ora mi chiedo se conviene veramene, a livello di pure prestazioni, di tempo impiegato per raggiungereil risultato finale, utilizzare una query di questa complessità o se è più conveniente utilizzare un ciclo For Next ed interrogare il db con due recordset e in pratica 12 interrogazioni semplici.
    Quindi, 1 query molto complessa o 12 semplici semplici?

    Grazie!

  7. #7
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    12 semplici, magari con una progress bar che indica all'utente che il programma non si è incastrato.

    Oppure cambi il tracciato del DB e utilizzi una tabella catalogo2colore (id_catalogo | id_colore | posizione) per esprimere la relazione tra catalogo e colore. Così puoi fare una query sola che coinvolge 3 tabelle (catalogo, catalogo2colore, colore) e la leggi con un ciclo.
    S'i fosse foco, arderei 'l mondo

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