Togliere doppioni nella where

di il
11 risposte

Togliere doppioni nella where

Ciao a tutti.

vorrei togliere i doppioni nella where di questa query

per semplificarla

SELECT * FROM Tbase

WHERE 
R =1 AND IdProdotto =5 OR 
R =2 AND IdCliente = Criterio1() OR 
R =3 AND IdCliente = Criterio1() AND IdProdotto =5 OR 
R =4 AND IdCliente = Criterio1() AND IdProdotto =5 AND IdFornitore = Criterio2() 
grazie

11 Risposte

  • Re: Togliere doppioni nella where

    13/09/2024 - AlbertoL ha scritto:

    Criterio1() OR 
    R =3 AND IdCliente = Criterio1() AND IdProdotto =5 OR 
    R =4 AND IdCliente = Criterio1() AND IdProdotto =5 AND IdFornitore = Criterio2() 

    Cosa sono Criterio1() e Criterio2(). Sono funzioni?

    Dove sono i doppioni nella where? non ho capito.

  • Re: Togliere doppioni nella where

    13/09/2024 - Philcattivocarattere ha scritto:

    Cosa sono Criterio1() e Criterio2(). Sono funzioni?

    Ovviamente si.

    Dove sono i doppioni nella where? non ho capito.

    Forse secondo AlbertoL questa parte dei criteri contiene ridondanze…? 

    Secondo me non è così sono criteri separati e non raggruppabili.
    Peccato che mancando le parentesi si possa fraintendere la priorità AND/OR:

    R =2 AND IdCliente = Criterio1() OR 
    R =3 AND IdCliente = Criterio1() AND IdProdotto =5 OR 
    R =4 AND IdCliente = Criterio1() AND IdProdotto =5 AND IdFornitore = Criterio2() 

    Sarebbe meglio scriverlo così sempre sia la suddivisione corretta.

    (R =1 AND IdProdotto =5) OR 
    (R =2 AND IdCliente = Criterio1()) OR 
    (R =3 AND IdCliente = Criterio1() AND IdProdotto =5) OR 
    (R =4 AND IdCliente = Criterio1() AND IdProdotto =5 AND IdFornitore = Criterio2())
  • Re: Togliere doppioni nella where

    Grazie a tutti

  • Re: Togliere doppioni nella where

    13/09/2024 - Philcattivocarattere ha scritto:


    13/09/2024 - AlbertoL ha scritto:

    Criterio1() OR 
    R =3 AND IdCliente = Criterio1() AND IdProdotto =5 OR 
    R =4 AND IdCliente = Criterio1() AND IdProdotto =5 AND IdFornitore = Criterio2() 

    Cosa sono Criterio1() e Criterio2(). Sono funzioni?

    Dove sono i doppioni nella where? non ho capito.

    si

  • Re: Togliere doppioni nella where

    Se Criterio1() e Criterio2() sono funzioni, non vanno indicati in quel modo. Per il resto non ho capito la domanda.

  • Re: Togliere doppioni nella where

    13/09/2024 - Antony73 ha scritto:


    Se Criterio1() e Criterio2() sono funzioni, non vanno indicati in quel modo. Per il resto non ho capito la domanda.

    grazie per la risposta

    come si usano nella query le funzioni?

    Per il resto non ho capito la domanda….

    intendevo questo: cioè eliminare dove possibile : IdCliente = Criterio1() e IdProdotto =5

        " WHERE R =1 And IdProdotto =5" & _
       " OR R =4 AND IdProdotto =5 AND IdCliente = Criterio1() AND IdFornitore = Criterio2()" & _
       " OR R =2 AND(IdCliente = Criterio1())" & _
       " OR R =3 AND IdCliente = Criterio1() AND IdProdotto =5"

  • Re: Togliere doppioni nella where

    Nel senso che vuoi eliminare i record che soddisfano la condizione where?

  • Re: Togliere doppioni nella where

    14/09/2024 - sihsandrea ha scritto:


    Nel senso che vuoi eliminare i record che soddisfano la condizione where?

    Ciao e grazie per la risposta

    no, semplicemente performare la query.

    Dove possibile ridurre i passaggi lasciando invariato il risultato.

  • Re: Togliere doppioni nella where

    Ah, certo!

    Ecco quella funzione che fa quella cosa con questo e quel campo di quello e quell'altro valore mettile al posto di quelle…

  • Re: Togliere doppioni nella where

    A: IdCliente = Criterio1() 

    B: IdProdotto =5 

    (R =1 AND B) 

    OR 

    (R =2 AND A)

    OR 

    (R =3 AND A AND B) 

    OR 

    (R =4 AND A AND B AND IdFornitore = Criterio2())

    Non mi sembra si possa ridurre.

  • Re: Togliere doppioni nella where

    Grazie

Devi accedere o registrarti per scrivere nel forum
11 risposte