Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581

    [mySQL] aiuto creazione vista

    Ho un db con una tabella che ha un sacco di campi e pensavo di ceare delle viste mirate per velocizzare le ricerche dall'applicativo che gestisce la banca dati

    Il mio problema è che nella tabella ci sono 2 campi, "rif" e "old_rif", che possono essere uno null e l'altro una stringa (non possono mai essere entrambi null o entrambi string)

    Dovendo fare degli ordinamenti su quel riferimento, pensavo di creare nella vista una colonna chiamata "riferimento" che fosse un concat dei due ... ma ho visto che quando c'è uno degli elementi null la funzione torna sempre null

    Qualcuno mi sa dire come posso risolvere questo problema?
    Pensavo se esisteva una sorta di operatore ternario .. ma non ho trovato nulla

    grazie mille

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select concat(null, ' ','pippo') -- NULL
    
    select concat_ws(' ',null,'pippo') -- pippo
    select concat(coalesce(null,''),'pippo') -- pippo

  3. #3
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    il bello è che concat_ws mi dava funzione non definita...

    alla fione ho cercato di nuovo i condizionali e ha messo:
    codice:
    IF(`proposta`.`rif` IS NULL, `proposta`.`old_rif`, `proposta`.`rif`) AS `riferimento`
    va bene lo stessoo va a rallentare molto?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ah, ho capito. Va bene così.
    Se non hai la funzione concat_ws vuol dire che la versione di mysql che usi è molto vecchia, sarà la 4.

  5. #5
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    strano .. da mysql administrator mi dice
    "Server: 5.0.51a-24+lenny4"

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Io non uso mysql ma penso comunque di non darti false indicazioni.

    Io userei una funzione condozionale " se " oppure " iif " oppure " CASE WHEN "


    Per esempio in SQLServer scriverei:

    CASE WHEN rif ISNULL THEN old_rif ELSE rif END
    Tradotto se rif è vuoto scrivi old_rif diversamente rif


    Devi adattare quanto sopra a mysql

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.