Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [SQL] Forzare una colonna inesistente

    Salve, la domanda è semplice, devo fare una query ma non so se tutti i campi che chiederò nella select saranno presenti nella tabella.

    Es:

    Tabella Prova (id,testo)

    Se scrivo

    select id,testo from Prova

    va bene, ma se scrivo

    select id,testo,testo2 from Prova

    va giustamente in errore.

    Se invece scrivo

    select id,testo,testo2=null from Prova

    non va in errore e in testo2 avrò sempre null.

    Visto che esiste la sintassi case when in Sql mi chiedevo se fosse possibile nella condizione domandare al motore sql se testo2 esiste oppure no.

    In sostanza dirgli "Se esiste stampalo, altrimento stampa null".

    Avete qualche idea in proposito?

    Tnx

  2. #2
    Posta il codice che hai usato, per creare la tabella ...
    Guarda qui: http://database.html.it/guide/lezion...uttura-select/
    Experience is what you get when you don’t get what you want

  3. #3
    Niente, alla fine ho dovuto fare via codice.

    Il discorso è questo, mi dovevo costruire un corredo ti tabelle partendo da un XML per ragioni di implementazione in un software di statistiche.

    In sostanza i passaggi erano questi:

    1° Creare una struttura di tabelle variabili (DECLARE @tabella table (...) dove le tabelle erano i vari nodi dell'XML e le colonne i vari attributi.
    2° Fare di questa struttura un'unica tabella con il sistema di utilizzo di una select come tabella in una from.

    Il problema però è che il file XML non necessariamente riporta tutti gli attributi possibili.

    Nell'XML che analizzo potrebbe esistere l'attributo Pippo ma se non compare mai non verrà inserito nella tabella nodo come campo perché la funzione analizza ogni xml possibile in maniera generica e non sa la struttura autentica e completa dell'xml.

    Se però l'utente vuole che io gli stampi Pippo (che sarà un campo vuoto) e vado a fare una select sul tabellone unificato dell'XML s'avvelena perché Pippo non c'è.

    Ho risolto in questo modo un pò tortuoso.

    Una volta che ho il tabellone unificato faccio una select top 1 da questo, successivamente controllo se l'utente mi ha richiesto campi che non ci sono nel tabellone, in tal caso li aggiungo come campo=null (Pippo=null)

    Quindi rifaccio una select dove i campi selezionati saranno quelli originali del tabellone + i campi non presenti richiesti settati a null dove il tabellone unificato viene usato come tabella nella from.

    In questo modo ho una tabella maxima e mooooolto sudata che soddisferà ogni esigenza (non fatevi idee strane)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.