Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Airfry
    Registrato dal
    Jan 2003
    Messaggi
    106

    Inner Join tra 5 tabelle

    Ciao a tutti.
    Ho un problema con l'interazione tra 5 tabelle dalle quali devo estrarre solo due o tre dati.
    In pratica le 5 tabelle sono strutturate per l'anagrafica articolo in 5 lingue diverse. I campi delle tabelle hanno gli stessi nomi, mentre cambiano i nomi delle tabelle che sono art_ita, art_eng, ecc Il campo univoco è il codice articolo (art_cod) e l'alro campo che mi serve recuperare è quello che indica se un articolo è online o meno (art_online). Questo campo ha valore si o no. Devo creare un semplice elenco per l'area di amministrazione in cui evidenziare se l'articolo AAA è online o meno per ogni rispettiva lingua. Cerco di speigarmi meglio con questo specchietto:

    cod-art__ita_eng_fra_esp_deu
    AAA_____si__si__no__no__si
    XYZ_____si__no__si__no__si
    ZZA_____si__si__no__no__no

    Allora ho provato a fare questa concatenazione (i nomi delle rispettive tabelle sono nelle variabili tabella1, 2, ...)

    Codice PHP:
    $sql1 "
    SELECT 
    $tabella1.*, $tabella2.*, $tabella3.*, $tabella4.*, $tabella5.*
    FROM 
    $tabella1 
    INNER JOIN 
    $tabella2
    ON 
    $tabella1.art_cod = $tabella2.art_cod
    INNER JOIN 
    $tabella3
    ON 
    $tabella1.art_cod = $tabella3.art_cod
    INNER JOIN 
    $tabella4
    ON 
    $tabella1.art_cod = $tabella4.art_cod
    INNER JOIN 
    $tabella5
    ON 
    $tabella1.art_cod = $tabella5.art_cod"
    Non riesco a elaborare in modo corretto i valori estratti... o li estraggo sbagliati o non li so utilizzare...

    Ho caricato solo due prodotti e solo per la tabella italiana il valore art_online è "si" mentre per gli altri è "no".
    In questo modo
    Codice PHP:
    echo "ita - $riga[art_nome] $riga[art_online]
    "
    ;    
    echo 
    "fra - $riga[art_nome] $riga[art_online]
    "
    ;        
    echo 
    "ing - $riga[art_nome] $riga[art_online]
    "
    ;    
    echo 
    "spa - $riga[art_nome] $riga[art_online]
    "
    ;    
    echo 
    "ted - $riga[art_nome] $riga[art_online]
    "

    tiro fuori questi valori sbagliati:
    ita - AAA no
    fra - AAA no
    ing - AAA no
    spa - AAA no
    ted - AAA no
    ita - XYZ no
    fra - XYZ no
    ing - XYZ no
    spa - XYZ no
    ted - XYZ no


    Potete aiutarmi a capire dove sto sbagliando? grazie
    Lo spartito della vita
    è un insieme di note.
    Ognuno è artefice della propria armonia.

  2. #2
    Prova così:

    Codice PHP:
    $sql1 "SELECT t1.art_online AS ao1, t2.art_online AS ao2, t3.art_online AS ao3, t4.art_online AS ao4, t5.art_online AS ao5, 
    t1.art_nome AS an1, t2.art_nome AS an2, t3.art_nome AS an3, t4.art_nome AS an4, t5.art_nome AS an5 
    FROM 
    $tabella1 t1, $tabella2 t2, $tabella3 t3, $tabella4 t4, $tabella5 t5 
    WHERE t1.art_cod = t2.art_cod AND t1.art_cod = t3.art_cod AND t1.art_cod = t4.art_cod AND t1.art_cod = t5.art_cod"
    ;

    ...

    echo 
    "ita - $riga[an1] $riga[ao1]
    "
    ;
    echo 
    "fra - $riga[an2] $riga[ao2]
    "
    ;
    echo 
    "ing - $riga[an3] $riga[ao3]
    "
    ;
    echo 
    "spa - $riga[an4] $riga[ao4]
    "
    ;
    echo 
    "ted - $riga[an5] $riga[ao5]
    "

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di Airfry
    Registrato dal
    Jan 2003
    Messaggi
    106
    GRAZIE Satifal!!! Chiedo scusa per il ritardo nella risposta, non è da me, ma causa lavoro non sono riuscito ad accedere prima di adesso. Mi sono arrovellato in questi giorni a pensare ad una soluzione senza sapere che ce l'avevo chiarissima grazie al tuo velocissimo aiuto (tra l'altro nelle mail non ho stranamente ricevuto la notifica che di solito mi arriva quando c'è un intervento nei post)

    E' esattamente quello che mi serve, sopratutto perchè sono variabili che posso rielaborare per delle condizioni. Quindi ero completamente sulla "pista sbagliata"... la inner join non era la soluzione giusta per estrarre i dati per questo scopo... su queste cose sono molto lacunoso, ma ti assicuro che adesso voglio anche capire bene nel dettalio ogni singola istruzione.
    Grazie ancora.
    Lo spartito della vita
    è un insieme di note.
    Ognuno è artefice della propria armonia.

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.