Ciao techno
La vedo dura
l'unica cosa che mi viene in mente è qualcosa tipo:
codice:
Select If((SELECT count(*) FROM MiaTabella WHERE FIND_IN_SET('Miovalore', `MioCampo`))>0, 'MiaTabella', NULL)
che ti restituisce il nome della tabella se nel campo indicato (MioCampo) è contenuto il valore 'MioValore' altrimenti ti restituisce NULL
Dovresti ripetere il codice per ogni campo della tabella dove è possibile riscontrare il valore e per ogni tabella su cui vuoi fare la ricerca.
Queste query vanno unite ed usate come una tabella temporanea da cui estrarre i valori che non sono NULL
Quindi qualcosa tipo:
codice:
SELECT *
FROM
(
Select If((SELECT count(*) FROM MiaTabella1 WHERE FIND_IN_SET('Miovalore', MiaTabella1.MioCampo1))>0, 'MiaTabella1', NULL) aS NomeTabella
UNION ALL
Select If((SELECT count(*) FROM MiaTabella1 WHERE FIND_IN_SET('Miovalore', MiaTabella1.MioCampo2))>0, 'MiaTabella', NULL)
UNION ALL
Select If((SELECT count(*) FROM MiaTabella2 WHERE FIND_IN_SET('Miovalore', MiaTabella2.MioCampo1))>0, 'MiaTabella2', NULL)
...
UNION ALL
Select If((SELECT count(*) FROM MiaTabellaN WHERE FIND_IN_SET('Miovalore', MiaTabellaN.MioCampoN))>0, 'MiaTabellaN', NULL)
) aS tMP
WHERE NomeTabella IS NOT NULL
Nota che l'identificatore di colonna "AS NomeTabella" è sufficiente metterlo anche solo nella prima select.
Se non ti interessano valori duplicati (ovvero se ti basta avere il nome della tabella una volta sola anche se il valore è in più campi) puoi usare UNION invece di UNION ALL.
Spero di esserti stato d'aiuto.
Ciao