Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Sql And E Or Annidate

  1. #1

    Sql And E Or Annidate

    Ciao a tutti, sto creando una query di filtro su alcune tabelle del mio db, ho bisogno di filtrare i risultati sulla base di 5 campi.

    Marca
    Tipo
    Modello
    ID
    Abilitato

    il problema è che se utilizzo i criteri AND e OR finisco per fare delle query kilometriche, c'è un sistema breve per eseguire l'istruzione su più campi che siano o meno tutti valorizzati?

    Grazie

  2. #2

  3. #3
    A parte che non funziona!

    SELECT Attrezzature.Id_Attrezzatura, Attrezzature.Marca, Attrezzature.Modello, Tipi.Tipologia, Attrezzature.Prezzo_acquisto, Attrezzature.Data_acquisto, Attrezzature.Descrizione, Attrezzature.Abilitato, Attrezzature.Id_Tipo, (SELECT Tipi.Tipologia WHERE Attrezzature.Id_Tipo = Tipi.Id_Tipo), Attrezzature.Id_Fornitore, Attrezzature.Id_BollaAcquisti FROM Attrezzature INNER JOIN Tipi ON Attrezzature.Id_Tipo = Tipi.Id_Tipo
    WHERE
    Attrezzature.Id_Tipo = @Id_Tipo OR Attrezzature.Marca = @Marca OR

    Attrezzature.Modello = @Modello OR (Attrezzature.Id_Tipo = @Id_Tipo AND

    Attrezzature.Marca = @Marca) OR
    (Attrezzature.Id_Tipo = @Id_Tipo AND Attrezzature.Modello = @Modello) OR
    (Attrezzature.Marca = @Marca AND Attrezzature.Modello = @Modello) OR
    (Attrezzature.Id_Tipo = @Id_Tipo AND Attrezzature.Marca = @Marca AND

    Attrezzature.Modello = @Modello)

    ORDER BY Attrezzature.Id_Attrezzatura DESC

  4. #4
    dario, dicci anche che db usi (mai letto il regolamento?)

  5. #5
    Hai ragione, scusa, sto lavorando su Visual Web Developer con db .mdf

  6. #6
    quindi m$sql. vedo che usi delle variabili, è una stored procedure?

  7. #7
    yesss, una store procedure, quella che ti ho scritto prima, quando lo vado a far girare no va!

  8. #8
    la posti tutta per piacere?

  9. #9
    SELECT Attrezzature.Id_Attrezzatura, Attrezzature.Marca, Attrezzature.Modello, Tipi.Tipologia, Attrezzature.Prezzo_acquisto, Attrezzature.Data_acquisto, Attrezzature.Descrizione, Attrezzature.Abilitato, Attrezzature.Id_Tipo, (SELECT Tipi.Tipologia WHERE Attrezzature.Id_Tipo = Tipi.Id_Tipo), Attrezzature.Id_Fornitore, Attrezzature.Id_BollaAcquisti

    FROM Attrezzature INNER JOIN Tipi ON Attrezzature.Id_Tipo = Tipi.Id_Tipo

    WHERE
    Attrezzature.Id_Tipo = @Id_Tipo OR Attrezzature.Marca = @Marca OR
    Attrezzature.Modello = @Modello OR (Attrezzature.Id_Tipo = @Id_Tipo AND Attrezzature.Marca = @Marca) OR
    (Attrezzature.Id_Tipo = @Id_Tipo AND Attrezzature.Modello = @Modello) OR
    (Attrezzature.Marca = @Marca AND Attrezzature.Modello = @Modello) OR
    (Attrezzature.Id_Tipo = @Id_Tipo AND Attrezzature.Marca = @Marca AND Attrezzature.Modello = @Modello)

    ORDER BY Attrezzature.Id_Attrezzatura DESC

  10. #10
    vabbè, quella TUTTA non è, mancano i parametri ecc

    comunque, il problema sono i parametri vuoti, giusto? quindi una soluzione potrebbe essere

    WHERE
    (campo1=@parametro1 OR @parametro1 IS NULL)
    AND (campo2=@parametro2 OR @parametro2 IS NULL)
    ... ecc ecc

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.