Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Join uno a molti

  1. #1

    Join uno a molti

    Buon giorno, ho fatto un nuovo post per il semplice fatto che la ricerca questa mattina non va...
    Allora, io ho 3 tabelle, una con i dati base per le news, ed altre due tabelle che mi servono per i dati aggiuntivi di quella della news.
    Nella prima ci sono le definizioni dei campi, dove dico che ho il campo "pippo", il campo "pluto", etc... e nella seconda ho i dati di questi campi, ovvero indico che la news X ha il campo Y il quale ha il valore Z.
    Se io volessi tirare fuori tutti i dati, dove una news ha più campi quindi con una relazione di "uno a molti", con una sola select come faccio?
    Con il JOIN riesco a tirare fuori un solo campo, avete qualche idea?

  2. #2
    usa left join

    la tabella in FROM ti dara' tutti i campi, quella in JOIN i campi relazionati e NULL negli altri

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Originariamente inviato da piero.mac
    usa left join

    la tabella in FROM ti dara' tutti i campi, quella in JOIN i campi relazionati e NULL negli altri
    Il problema è che questo funziona se tra la tabella news e quella con i dati c'è un rapporto di uno ad uno, ma non se c'è un uno a molti, dove un record di news avrà molti record sull'altra tabella

  4. #4
    Originariamente inviato da darkmavis
    Il problema è che questo funziona se tra la tabella news e quella con i dati c'è un rapporto di uno ad uno, ma non se c'è un uno a molti, dove un record di news avrà molti record sull'altra tabella
    ma hai provato? forse dovresti invertire la tabella che metti in from con quella in left join.

    In FROM ci vuole la tabelle con i "molti", in left join la tabella con gli "uno"

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da piero.mac
    ma hai provato? forse dovresti invertire la tabella che metti in from con quella in left join.

    In FROM ci vuole la tabelle con i "molti", in left join la tabella con gli "uno"
    Certo che ho provato!
    In questo modo mi ritrovo tante news duplicate per quanti record ci sono sulla tabella dati, e questo non mi va bene

  6. #6
    Originariamente inviato da darkmavis
    Certo che ho provato!
    In questo modo mi ritrovo tante news duplicate per quanti record ci sono sulla tabella dati, e questo non mi va bene
    tu sai qual'e la struttura delle tabelle.

    posta un esempio di come sono composte e la query che non funziona

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Originariamente inviato da darkmavis
    Certo che ho provato!
    In questo modo mi ritrovo tante news duplicate per quanti record ci sono sulla tabella dati, e questo non mi va bene
    non avevo realizzato....

    certo che trovi tanti record duplicati, e' ovvio. O prendi tutti i "molti" che sono associati agli "uno", oppure prendi sono un "UNO" associato ad un "MOLTO"

    devi poi con il php trovare un campo di riferimento degli "UNO" (che sia facile tipo l'id) e non stampare la news se l'id fosse uguale al precedente, cioe' stessa news....


    non serve che posti dati e struttura

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Vedo di risolvere in altro modo allora, mi sembra troppo macchinosa questa soluzione a questo punto.
    Grazie lo stesso

  9. #9
    Originariamente inviato da darkmavis
    Vedo di risolvere in altro modo allora, mi sembra troppo macchinosa questa soluzione a questo punto.
    Grazie lo stesso
    guarda che e' semplicissimo....

    codice:
    $id = '';
    
    while ......
    if($id != $row['id']) { 
        stampa la news e tutto il resto
        $id = $row['id'];
        }  else { stampa tutto il resto senza la news   }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Originariamente inviato da piero.mac
    guarda che e' semplicissimo....

    codice:
    $id = '';
    
    while ......
    if($id != $row['id']) { 
        stampa la news e tutto il resto
        $id = $row['id'];
        }  else { stampa tutto il resto senza la news   }
    Il problema è che la query in realtà è più complessa di come l'ho spiegata io, ci sono altre tabelle ed il tutto sta dentro una mia classe.
    Lassamo perde che è meglio

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.