Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [SQL] Campi Calcolati

  1. #1

    [SQL] Campi Calcolati

    Allora io ho una tabella di questo tipo:

    Articolo | prezzo | prezzo in offerta
    art1 | 10 | 5
    art2 | 14 | 3
    art3 | 10 | null
    art4 | 13 | null

    e mi serve una select che mi restituisce

    Articolo | min_prezzo
    art1 | 5
    art2 | 3
    art3 | 10
    art4 | 13

    come faccio a dirgli di prendermi il prezzo più basso quando è in offerta e il prezzo normale quando invece non è in offerta (null)?

    Ci sto uscendo scemo ma non riesco a trovcare niente

    Graffie
    GIOCHI FLASH
    CoinHop.com >>> Un nuovo gioco al giorno

    Fattori Arcani
    Userbar Maker Crea la tua Userbar con un click!

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    La prima soluzione che mi viene in mente è questa. Di default setti a 0 il campo prezzo_offerta.
    Quindi fai una query così: se il prezzo offerta è pari a 0 allora non è in offerta e recuperi il prezzo pieno. Se prezzo offerta contiene un valore si suppone che sia più basso del prezzo pieno allora recuperi quello.
    Sicuramente ci sono soluzioni migliori ma non sono un mago del SQL.


    select articolo,prezzo_offerta as prezzo_finale from tuaTabella where prezzo_offerta <> 0
    union
    select articolo,prezzo as prezzo_finale from tuaTabella where prezzo_offerta = 0;

  3. #3
    prova una cosa del genere, è un pò macchinosa ma dovrebbe funzionare
    codice:
    SELECT articolo,
    IF (
    IFNULL( prezzo, offerta ) <= IFNULL( offerta, prezzo ) , IFNULL( prezzo, offerta ) , IFNULL( offerta, prezzo )
    ) AS min_prezzo
    FROM tabella







    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    Originariamente inviato da nicola75ss
    La prima soluzione che mi viene in mente è questa. Di default setti a 0 il campo prezzo_offerta.
    Quindi fai una query così: se il prezzo offerta è pari a 0 allora non è in offerta e recuperi il prezzo pieno. Se prezzo offerta contiene un valore si suppone che sia più basso del prezzo pieno allora recuperi quello.
    Sicuramente ci sono soluzioni migliori ma non sono un mago del SQL.


    select articolo,prezzo_offerta as prezzo_finale from tuaTabella where prezzo_offerta <> 0
    union
    select articolo,prezzo as prezzo_finale from tuaTabella where prezzo_offerta = 0;
    sto provando questa soluzione che non so se sia la migliore lavorando su 109.662 record, Non utilizzo gli zeri ma NULL e IS NOT NULL

    Ora ho questo problema, il risultato della query mi restituisci questi prezzi...

    da così 0.01 a 0.00999999977648258
    da così 0.52 a 0.519999980926514

    perché fa questo?

    Tnx
    GIOCHI FLASH
    CoinHop.com >>> Un nuovo gioco al giorno

    Fattori Arcani
    Userbar Maker Crea la tua Userbar con un click!

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.