Visualizzazione dei risultati da 1 a 6 su 6

Discussione: join di tabelle???

  1. #1

    join di tabelle???

    Salve a tutti,

    ecco il mio problema: ho una applicazione che gestisce prodotti provenienti da 2 fornitori, ora nel mio catalogo dovrebbero comparire i prodotti di entrambe i fornitori in una unica tabella (alcuni possono avere anche lo stesso codice) in pratica il mio catalogo dovrebbe avere una struttura simile alla seguente:

    CODICE - DESCRIZIONE - PREZZO FORNITORE A - PREZZO FORNITORE B

    00001 prodotto 1 10.00 11.00
    00002 prodotto 2 ---- 5.00
    00003 prodotto 3 6.00 ----


    quale join posso usare????

  2. #2
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Se i fornitori sono 2, allora è fattibile, altrimenti se sono n è molto complesso....

    Se sono 2 puoi fare così:

    codice:
    SELECT A.CODICE, A.DESCRIZIONE, F1.PREZZO AS PREZZOA, F2.PREZZO AS PREZZOB FROM ARTICOLI A, PREZZI F1, PREZZI F2 WHERE A.CODICE=F1.CODICE AND A.CODICE=F2.CODICE AND FI.CODICE_FORNITORE='CODICEF1' AND F2.CODICE_FORNITORE='CODICEF2'
    In pratica fai il join con la stessa tabella chiamandola con due alias diversi.
    Viene vista come se fossero due tabelle diverse....
    Quindi la prima volta fai un join con il primo fornitore e la seconda con il secondo.

    Il risultato è quello che cerchi.
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  3. #3
    No ma io i prodotti li ho comunque in due tabelle, una per il fornitore A e l'altra per il fornitore B.

    Solo che i due fornitori nel loro listino possono avere lo stesso articolo ma me lo offrono con due prezzi diversi, quindi io dovrei creare una tabella che mi mette a video comunque tutti gli articoli (presi dalle due tabelle) ma per gli articoli con uguale codice mi stampa solo il prezzo di seguito uno schema di come vorrei venisse la tabella:

    CODICE - DESCRIZIONE - PREZZO FORNITORE A - PREZZO FORNITORE B

    00001------- prodotto1------- 10.00 --------------------11.00
    00002------- prodotto 2------- 5.00----------------------------
    00003------- prodotto 3------- 6.00 --------------------------

  4. #4
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    In questo caso l'unica è una query con left o right join.

    Non credo che esista una query join che prende tutti gli articoli sia dell'una che dell'altra....

    Dovresti fare una union tra 3 query:

    La prima che prende tutti quelli in comune
    La seconda che prende solo quelli che ha il fornitore A ma non il fornitore B
    La seconda che prende solo quelli che ha il fornitore B ma non il fornitore A

    Non è difficile..... provaci.....
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  5. #5
    e come posso fare poi a mettere a video il tutto???

    es. creo la queryA per l'inner join
    la queryB per il left join
    la queryC peri il right join

    come unisco poi tutti i risultati???

  6. #6
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Con la union.....

    codice:
    select a.codice, a.descrizione, a.prezzoa, b.prezzob from tabellaa a, tabellab b where
        a.codice=b.codice
    union all
    select a.codice, a.descrizione, a.prezzoa, b.prezzob from tabellaa a left outeer join tabellab b 
    on a.codice=b.codice where b.prezzob is null
    union all
    select b.codice, b.descrizione, a.prezzoa, b.prezzob from tabellab b left outeer join tabellaa a 
    on b.codice=a.codice where a.prezzoa is null
    order by codice
    così ricavi tutti gli articoli con i relativi prezzi di a e b se presenti
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

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.