Query con i giorni della settimana

  • Creatore Discussione Creatore Discussione Gae
  • Data di inizio Data di inizio

Gae

Utente Attivo
15 Mar 2021
55
4
8
Salve, sono alle prime armi nell'uso del linguaggio SQL.
Ho scritto già alcune query ma per quel che devo fare ho dei dubbi
Spero di essere chiaro
Ho vari campi boolean per i giorni della settimana e suddivisi per Mattina/Pomeriggio
Es.: lune_matt, lune_pome, mart_matt, mart_pome e così via
L'utente sceglie la data ed indica se gli interessa mattina, pomeriggio o entrambi
Per capire come fare ho semplificato la query pensando solo al giorno e non a Matt/Pome.
Ho creato un array con i giorni della settimana
settimana = array( 'lune_matt', 'mart_matt'... )
dalla data estrapolo il giorno della settimana, esempio martedì che è 3 e fare la where
giorno = settimana[3]
where giorno = true
Non so se sia giusto ragionare così o se c'è un sistema più comodo
 
la spiegazione é poco comprensibile,
sarebbe utile vedere la tabella con qualche riga di esempio e quale risultato ci si attende dall'esempio
 
la spiegazione é poco comprensibile,
sarebbe utile vedere la tabella con qualche riga di esempio e quale risultato ci si attende dall'esempio
Spero di essere più chiaro stavolta e come consigliato da te posto questa tabella, ricordo che i campi sono TRE o FALSE
Non so se la tabella va esposta con questo tag
Codice:
id  | lune_matt | lune_pome | mart_matt | mart_pome | merco_matt | merco_pome | giove_matt | giov_pome | e così via
 1  |         T         |         F           |         F          |         T           |            T          |            T            |         F          |        F            |
 2  |         T         |         T           |         T          |         F           |            T          |            T            |         T          |        T            |
 3  |         F         |         F           |         F           |        T            |           F           |            F            |         F          |        F            |
...
ipotizzando che il giorno sia martedì pomeriggio, dovrebbe restituirmi solo gli id 1 e 3
non so esista un comando per evitare di controllare ogni singolo campo
 
SQL:
select id, mart_pome
from tabella
where mart_pome = 'T'
order by id

1648119126202.png
 
Marino, grazie del codice, ma mi sa che dovevo scrivere anche la parte del messaggio scritto nel primo post.
La questione è che l'utente sceglie la data e se mattina o pomeriggio.
Su questi 2 dati devo impostare la query.
Quindi dev'essere una query dinamica e non fissa perchè a monte non so cosa sceglierà
 
l'utente sceglie la data e se mattina o pomeriggio
puoi postare il codice usato per questa scelta ?

in ogni caso, ho capito che utilizzi una tabella da 7 giorni (includendo sab e dom) x 2 ovvero mattina / pomeriggio
mi sembra un sistema di prenotazione ciclico su 7 giorni, ovvero al termine della giornata le prenotazioni vengono "rimosse" rendendo la giornata disponibile per la settimana successiva
mi sembra un sistema semplice e facilmente gestibile,
tutto dipende comunque dall'applicazione che gli utenti usano per prenotare il giorno e la mattina o il pomeriggio
deve essere un applicazione che consenta di raccogliere questi parametri e passarli al server che elaborando la query restituisce il risultato (positivo / negativo)
più di così non so che dire senza conoscere il codice già sviluppato per la scelta
 
Si Marino ho una tabella con vari campi, oltre ai giorni della settimana suddivisi tra mattina e pomeriggio ho l'id del cliente, le date in cui non è possibile consegnare ed altri campi tipo in quella località o zona non puoi consegnare ed altro. La query è abbastanza complessa.
I giorni della settimana fanno parte del tabella e non vengono azzerati.
La query per i giorni della settimana non l'ho ancora realizzata perchè vista la mia poca esperienza non ho capito qual è il giusto modo di operare.
La prima idea è quella di creare una stringa. L'input è dato dalla data ($data) e se è di mattina e/o pomeriggio (2 campi boolean $matt, $pome).
Creo l'array del giorno dei giorni della settimana
$campo = array ('dome_','lune_','mart_','merc_','giovedì','vene_','saba_','dome_') ;
$nuGio = (int)date("N", $data);
if ($matt) {
$giorno = $campo[$nuGio] .'matt ;
} else $pome
$giorno = $campo[$nuGio] .'pome' ;
}
poi aggiungere la parte che potrebbero essere stati selezionati sia mattina che pomeriggio
E poi usare il codice che hai scritto tu.

Ho visto anche che c'è il comando dayOfWeek

Non so se l'approccio è quello giusto o meno, perciò sono indeciso
 
supponi che "@giorno" e "@tipo" siano le variabili di uno script php "$giorno" e "$tipo"
con "mart_pome" e "merc_matt" come esempi, la query può essere scritta con solo i 2 parametri "@giorno" e "@tipo"
1648474330020.png


dimmi se ho capito ....
 
Si adesso devo inserirla nel resto della query
Grazie sia per il tempo che per la disponibilità
 
ma puoi costruirla direttamente con php, la query sarà molto più semplice

PHP:
$giorno = "mart_pome";
$tipo   = "T";

$sql = "SELECT id, " . $giorno
     . " FROM tabella"
     . " WHERE " . $giorno . " = '" . $tipo . "'"
     . " ORDER BY id";

echo "<h3>query</h3>" . $sql;

1648477785439.png
 

Discussioni simili