Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1

    Select di righe: se c'è un valore prende quella riga, sennò l'altra

    Vabbeh, il titolo non è il massimo....
    Ho una tabella che, nella colonna Codice, può contenere o zero (default) o il codice cliente.
    Possono però esistere righe identiche in tutti gli altri campi e l'unica differenza è appunto il "Codice".
    Esempietto....

    id codice descrizione
    1 0 pippo
    2 5 pippo
    3 0 pluto
    4 5 paperino
    5 3 pippo

    La query che sto cercando di creare dovrà tirare fuori le righe 2, 3 e 4 perchè:
    la riga 1 è "identica" alla riga 2 ma la riga 2 ha il mio codice (5) e quindi "prevale"
    la riga 3 ha codice 0 e non esiste un'altra riga con descrizione pluto che abbia il mio codice
    la riga 4 ha il mio codice
    la riga 5 non ha nè 0 nè il mio codice, quindi non la considero

    Non ne vengo a capo....ho provato con group by, con distinct ecc ma boh...mi perdo qualcosa.

    Db: MySql

    Grazie
    Ultima modifica di Dascos; 16-12-2021 a 13:11

  2. #2
    non so se ce la fai con una sola query, ma intanto ti dico la strategia:

    a) query che estrae tutti i codice=5
    b) query che estrae tutti i codice=0 la cui descrizione non sia già nella query a)
    c) query union di a) e b)

    prova per passi e vedi se funziona

  3. #3
    ....per ora questa sembra funzionare, sto facendo qualche verifica aggiuntiva con dati "non di esempio"...

    codice:
    SELECT 
    *
    FROM `Piano_Conti`
    WHERE 
    ID_Utente = 5
    having Codice BETWEEN 108000001 and 108999999
    and EXISTS (select ID from Piano_Conti where ID_Utente = 0 )

  4. #4
    Non è vero :-D
    Non funziona quella proposta qui sopra, però questa sì, sembra andare bene
    codice:
    SELECT 
    *
    FROM `Piano_Conti`
    WHERE 
    (ID_Utente = 5 
    or  
    (ID_Utente = 0 and Codice not in 
     (select Codice from Piano_Conti where ID_Utente = 5)
    )
    ) and Codice BETWEEN 108000001 and 108999999
    Tra l'altro una analisi della query mi dice anche che sta usando gli indici giusti, quindi niente scan o full scan o robaccia simile
    Ultima modifica di Dascos; 16-12-2021 a 15:48

  5. #5

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.