Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Join Condizionale

  1. #1
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308

    Join Condizionale

    Ciao,
    volevo sapere se è possibile effettuare una join condizionale basandosi sul valore di un certo campo di una certa tabella ( estratta in precedenza nella medesima query ).

    Il mio problema è una query molto complessa, ho bisogno di effettuare una inner join, però solo se un valore non è NULL.

    Allo stesso modo dovrei utilizzare un IF anche nella clausola where, in quanto se effettuo la inner join ho bisogno di filtrare, altrimenti no.

    Uso già un IF statement nel listato dei campi da estrarre, di questo tipo => IF(condizione,se vera, se falsa), ma non funziona per quanto riguarda la join, già provato ( ed inoltre non mi serve la condizione falsa ).

    Se possibile avere esempi non sarebbe male

    Grazie

  2. #2
    abbastanza confusa come richiesta....

    Il mio problema è una query molto complessa, ho bisogno di effettuare una inner join, però solo se un valore non è NULL.
    mettiamo sia il campo `pippo`

    .....
    where pippo IS NOT NULL

    Per il resto con la if non si capisce cosa vorresti ottenere. Perche' non funziona e cosa non funziona rispetto a quale aspettativa...

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

  3. #3
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Provo a spiegarmi meglio,
    questo è un esempio di come la query è strutturata

    SELECT [.....],
    FROM [...],
    LEFT JOIN [..],
    LEFT JOIN [..],
    INNER JOIN [..],
    [.....]

    a questo punto dovrei mettere una condizione, SE un certo campo di una di quelle tabelle è null non fare nulla, altrimenti fare una ulteriore inner join.

    Da cosa nasce questa esigenza?

    E' indispensabile per me effettuare un INNER JOIN, ma il valore potrebbe essere null. Se il valore è null il record non è presente tra i risultati. A me il record serve in ogni caso.


    Ho la necessità di una INNER JOIN in quanto, da un id di una tabella gerarchica ( che è il dato che potrebbe essere null ), che utilizza il preordered table tree algorithm, devo ricavarmi tutti gli id parenti e ritornarli come valore di un unico campo tramite un GROUP CONCAT.

    Voglio sottolineare che il mio problema non è la concatenazione.

    E' probabile che ci siano altre soluzioni, ma per ora, il fulcro ella questione è: con mysql è possibile fare una join condizionale?

    Spero di essere stato più chiaro.

    Ciao!

  4. #4
    usa il LEFT join invece dell'INNER join. Oppure con una subquery. troppo vago il problema.

    in from la tabella che deve darti tutti i record in left join con le tabelle che ti devono rendere solo i record che hanno la relazione presente.

    Per il NULL che puoi beccare nel group_concat forse fai prima a toglierlo con una funzione php del tipo str_replace.

    per il discorso join condizionale sintatticamente funziona qualcosa del genere

    from ciccio
    inner join pallo ON ciccio.id = if(campo = NULL, pallo.id, 0)

    ovviamente non essendoci 0 negli id il record verra' scartato.

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

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.