Subquery + "wildcard"

di il
2 risposte

Subquery + "wildcard"

Buongiorno! devo chiedervi un aiuto con le subquery, mi si son bloccato su un esercizio davvero stupido, ma non ne esco!
La situzione in cui mi trovo è questa:

tabella1: id_pratica, esito_note
tabella2: esiti_accettati

Nella prima tabella il campo "esito_note" è un campo testuale che contiene concettualmente "esito" + "note" (es "ok dal 15/09", dove "ok" è l'esito e "dal 15/09" sono le note).
Nella seconda tabella, invece, come da nome, c'è un unica colonna contenente i record degli esiti "positivi".

Quello che sto cercando di fare è una query in cui estraggo tutte le pratiche che hanno nel campo "esito_note" un esito accettato (verificabile dalla tabella2). Ad esempio ignorando la pratica con "esito_note": "KO, peccato".
Attualmente, per necessità, eseguo due query distinte e confronto le stringhe con php. ma i record iniziano ad essere onerosi e cercavo quindi una soluzione utilizzando direttamente una sola query.

N.B: avviso subito i saccentini che mi suggeriranno di "gestire meglio il database" che la situazione attuale è pregressa e subordinata ad altre persone. Quindi consigli di questo tipo, aimè, sono inutili.

Spero di essermi spiegato in modo chiaro e semplice.
Grazie in anticipo

2 Risposte

  • Re: Subquery + "wildcard"

    Quale è il legame tra le 2 tabelle?
    Ovvero se il legame è dato da un campo di tipo testo (esiti_accettati, esito_note) come riesci a garantire che il legame venga rispettato?
    Visto che il DB sembra strutturato in maniera poco funzionale (cerco di non fare il saccentone) credo che sia solo possibile tentare di ricostruire dei campi andando ad estrarre delle parti di testo (es. OK oppure KO) per poi fare il join tra le query ...
    Comunque sentiti libero di aggiungere info soprattutto sul contenuto dei 2 campi testuali.
  • Re: Subquery + "wildcard"

    max.riservo ha scritto:


    Quale è il legame tra le 2 tabelle?
    Ovvero se il legame è dato da un campo di tipo testo (esiti_accettati, esito_note) come riesci a garantire che il legame venga rispettato?
    Visto che il DB sembra strutturato in maniera poco funzionale (cerco di non fare il saccentone) credo che sia solo possibile tentare di ricostruire dei campi andando ad estrarre delle parti di testo (es. OK oppure KO) per poi fare il join tra le query ...
    Comunque sentiti libero di aggiungere info soprattutto sul contenuto dei 2 campi testuali.
    La situazione è quella in cui nella tabella vengono riportate le pratiche con relativo esito che potrebbe essere "attivo dal 15/09", "pratica sospesa per validazione", "pratica ok", "pratica ko","pratica accettata in data 01/09/22".
    Nella seconda tabella, invece, sono presenti gli "esiti positivi", ovvero quelli che indicano che l'esito della pratica è effettivamento positivo. Alcuni esempi sono "attivo","pratica ok", "pratica accettata".

    Di fatto non c'è una relazione tra le due tabelle.
    Quello che devo fare è praticamente verificare se l'esito "attivo dal 15/09" sia effettivamente positivo o meno consultando, appunto, la tabella 2.

    Penso di aver trovato una soluzione usando una wildcard nella join: select t1.* From t1 join t2 on t1.esito_note like Concat(t2.esiti_accettati,'%')

    Per mio "errore" mi son fissato sulle subquery, escludendo la possibilità delle join.
Devi accedere o registrarti per scrivere nel forum
2 risposte