# SQL OR: query di dati con più condizioni

L’operatore SQL `OR` ottimizza la tua ricerca nei record di dati per ottenere risultati che soddisfino **almeno una delle varie condizioni definite**. Inoltre, è possibile combinare SQL `OR` con altri operatori logici, come `AND` o `NOT`, per migliorare e velocizzare le tue query più complesse.

## Che cos’è l’operatore SQL `OR`?

Gli operatori [SQL AND](https://www.ionos.it/digitalguide/server/configurazione/sql-and/), [SQL NOT](https://www.ionos.it/digitalguide/server/configurazione/sql-not/) e SQL `OR` sono fra gli [operatori SQL](https://www.ionos.it/digitalguide/server/configurazione/operatori-sql/) più importanti per la ricerca delle informazioni che ti interessano. Mentre `AND` trova i dati che soddisfano più condizioni e `NOT` serve a definire criteri di esclusione, SQL `OR` permette di espandere l’insieme dei risultati. In pratica, ti consente di definire più condizioni di ricerca, i cui risultati devono **soddisfare almeno uno dei criteri**. Il vantaggio è la possibilità di filtrare i risultati pertinenti che non devono però soddisfare obbligatoriamente tutti i criteri.

L’operatore `OR` serve a formulare una condizione di ricerca ed è quindi utilizzato di solito insieme a [SQL SELECT](https://www.ionos.it/digitalguide/server/configurazione/sql-select/) e [SQL WHERE](https://www.ionos.it/digitalguide/server/configurazione/sql-where/) per **ottenere record di dati, colonne e condizioni di ricerca rilevanti**. Per rendere ancora più precise le tue query, è possibile combinare `OR` anche con altri operatori logici come `AND` e `NOT` oppure con altri operatori di confronto come `=`.

### SQL `OR`, `AND` e `NOT` in breve

Gli operatori SQL `OR`, `AND` e `NOT` si differenziano nel modo seguente:

<table>
  <thead>
    <tr>
      <th>SQL `OR`</th>
      <th>SQL `AND`</th>
      <th>SQL `NOT`</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Filtra i record di dati che soddisfano almeno una delle condizioni</td>
      <td>Considera solo i dati che soddisfano tutte le condizioni</td>
      <td>Ignora le informazioni che non soddisfano una data condizione</td>
    </tr>
    <tr>
      <td>Espande l’ambito di ricerca a più informazioni differenti</td>
      <td>Restringe la ricerca a una combinazione di condizioni applicabili</td>
      <td>Ignora le informazioni non pertinenti in base a criteri di esclusione</td>
    </tr>
  </tbody>
</table>

Consiglio Se desideri entrare nel mondo del noto linguaggio per database e programmazione [SQL](https://www.ionos.it/digitalguide/server/know-how/che-cose-sql/), puoi farlo rapidamente anche partendo da zero. Troverai le principali nozioni di base nella nostra [introduzione a SQL mediante esempi](https://www.ionos.it/digitalguide/server/configurazione/introduzione-a-sql-mediante-esempi/).

## La sintassi dell’operatore `OR`

Per le tue query di dati puoi definire **due o più condizioni di ricerca**. La sintassi di `OR` è semplice e si presenta così:

```sql
SELECT  *
FROM  Tabella
WHERE  condizionericerca1  OR  condizionericerca2  OR …
```

Sono disponibili i seguenti parametri:

- `SELECT`: seleziona le colonne interessate da cui richiamare i dati per mezzo delle effettive chiavi primarie ed esterne. Inserendo un asterisco `*` al posto del nome di una colonna è possibile eseguire la ricerca nell’intero record di dati.
- `FROM`: definisce la tabella in cui eseguire la query di ricerca.
- `WHERE`: utilizza operatori e ulteriori parametri per definire condizioni di ricerca con cui restringere le query di dati.
- `OR`: utilizzato come operatore logico in combinazione con SQL `WHERE` per definire i criteri di ricerca che devono essere soddisfatti o non soddisfatti dai risultati.

Per definire ulteriormente la tua query di dati è disponibile una **combinazione opzionale** con `AND` o `NOT`.

### SQL `OR` in combinazione con `AND`

In combinazione con `AND` è necessario che sia rispettato almeno uno dei criteri di ricerca di `OR`, mentre entrambe le condizioni di ricerca `OR` devono soddisfare la condizione `AND`.

```sql
SELECT  *
FROM  Tabella
WHERE  (condizionericerca1  OR  condizionericerca2)  AND  condizionericerca 3
```

### SQL `OR` in combinazione con `SQL`NOT`

In combinazione con `NOT` è possibile **escludere i dati** che non soddisfano almeno uno dei criteri di ricerca definiti.

```sql
SELECT  *
FROM  Tabella
WHERE  NOT  (condizionericerca1  OR  condizionericerca2)
```

## Applicazioni dell’operatore `NOT`

Con l’operatore `OR` è possibile cercare record di dati complessi in modo mirato in base a più criteri. Le possibili applicazioni sono, ad esempio:

- Filtraggio di clienti, dati relativi a ordini o prodotti in base a criteri di ricerca combinati, come categorie di prodotto, caratteristiche del prodotto o data di un ordine o reclamo
- Ricerca di imprese in determinati settori o in determinate regioni
- Filtraggio di transazioni sospette o non valide in base a più condizioni
- Ricerca di informazioni sui dipendenti che fanno parte di un dato reparto o team
- Individuazione di candidati che non offrono determinate qualifiche o privi di esperienza professionale

## Esempi pratici per l’operatore SQL `OR`

Le **possibilità di applicazione dell’operatore `OR`** sono quasi illimitate grazie alle combinazioni con SQL `WHERE`, altri operatori SQL e ulteriori funzioni SQL. Nelle parti seguenti ti mostriamo tre pratici esempi di applicazione per comprendere meglio il funzionamento di `OR`.

### Ricerca di ordini in base a determinate categorie

Il tuo obiettivo è cercare, in una tabella clienti, soltanto le persone che hanno ordinato i prodotti della categoria “Elettronica”, della categoria “Bellezza” o di entrambe. I risultati devono contenere solo le informazioni rilevanti per **almeno una delle condizioni**. Per definire le categorie, utilizza l’operatore di confronto `=`.

La sintassi si presenta così:

```sql
SELECT  *
FROM  Clienti
WHERE  (Categoria  =  'Elettronica'  OR  Categoria =  'Bellezza')
```

### Filtraggio di candidati

In una tabella “Candidati” vogliamo trovare solo le persone che hanno un titolo di studio in “Elettrotecnica” o in “Informatica” e che in entrambi i casi dispongono di almeno tre anni di esperienza professionale. A tal fine, utilizza `OR` e `AND` in combinazione. La ricerca si presenta così:

```sql
SELECT  *
FROM  Candidati
WHERE  (Titolo  =  'Elettrotecnica'  OR  Titolo  =  'Informatica')
AND (Esperienza  &gt;=  3)
```

### Ricerca di dati per regione

Nella tabella “Clienti” stiamo cercando i clienti in Italia o in Svizzera. La sintassi è la seguente:

```sql
SELECT  *
FROM  Clienti
WHERE  Stato  =  'Italia'  OR   Stato  =  'Svizzera'
```

## Alternative a SQL `OR`

L’operatore `OR` consente una ricerca facile e veloce utilizzando **più criteri di ricerca alternativi**. Funzionalità simili o identiche sono offerte da altri operatori SQL come:

- `CASE`: l’istruzione [SQL CASE](https://www.ionos.it/digitalguide/server/configurazione/sql-case/) ti permette di utilizzare le clausole `WHERE`, `THEN` ed `ELSE` per verificare anche le condizioni di ricerca e definire analisi complesse per insiemi risultato pertinenti. La valutazione ha luogo in base al metodo “IF-THEN-ELSE” da una condizione all’altra e dal basso verso l’alto. L’analisi si ferma quando una delle condizioni diventa vera.
- `IN`: con l’operatore `IN` in combinazione con la clausola `WHERE` è possibile eseguire ricerche nei record di dati definendo valori o sequenze di caratteri per mezzo di `IN` e cercando le corrispondenze in una tabella o in una colonna.
- `EXISTS`: con l’operatore [SQL EXISTS](https://www.ionos.it/digitalguide/server/configurazione/sql-exists/) è possibile controllare in un’intera tabella se almeno un record di dati selezionato di un’altra tabella corrisponde alla prima tabella. In presenza di almeno una corrispondenza, il risultato diventa parte della tabella di destinazione. L’operatore è però utile soltanto se le due tabelle sono in relazione fra loro.


This is a markdown version of: [https://www.ionos.it/digitalguide/server/configurazione/sql-or/](https://www.ionos.it/digitalguide/server/configurazione/sql-or/) for AI/LLM consumption.