Provo a spiegare il mio problema.
Prendiamo ad esempio un singolo record della tabella ordini_dettagli.
Nel record c'è un campo "stringa_mesi" che contiene una stringa di questo tipo: 000100010001, e un campo numerico che indica l'anno di riferimento, in questo caso 2009
Ogni carattere della stringa "000100010001" rappresenta un mese, infatti sono esattamente 12 caratteri. Il valore può essere 0,1 oppure 2, ma questo non ci interessa per ora.
Dunque, una funzione crea automaticamente una query come questa:
codice:
SELECT * FROM ordini_dettagli WHERE CAST(SUBSTRING(stringa_mesi, 4, 1) AS SIGNED) = 1 AND anno = 2009
UNION
SELECT * FROM ordini_dettagli WHERE CAST(SUBSTRING(stringa_mesi, 8 , 1) AS SIGNED) = 1 AND anno = 2009
UNION
SELECT * FROM ordini_dettagli WHERE CAST(SUBSTRING(stringa_mesi, 12 , 1) AS SIGNED) = 1 AND anno = 2009
Io mi aspettavo di visualizzare tre volte lo stesso record (poichè il valore 1 è sulle posizioni 4, 8 e 12 della stringa), invece il record viene mostrato una sola volta...
Ho provato anche ad usare un alias per il nome della tabella...
Non riesco a focalizzare dov'è l'errore. Non so nemmeno se ho esposto chiaramente il mio problema.
Riferendomi sempre all'esempio, il risultato che dovrei ottenere è visualizzare tre volte lo stesso record.