Sacar diferencias de dos tablas

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hola

Vereis, creo dos tablas con unos 5000 elementos cada una, y quiero sacar las diferentes entradas que hay en una y que no estan en la otra. Que son unas 630.

Creo las dos tablas sin problemas, pero no se como buscar en la tabla las entradas de la segunda tabla para comprobar si ya existe o no y sacar las diferencias.

No se si me explico bien, lo que busco es, por ejemplo:

Tabla1 = {a1, a2, a3)
Tabla2 = {a1,a3}

---sacando la diferencia crearía otra tabla
Tabla3 = {a2}
utiliza esat funcion que he echo:
t={"a1", "a2", "a3"};
t2={"a8", "a2", "a5","a23","a3"};

function tblcompare(tb1,tb2)
local n,s,i;
	if type(tb1)=="table" and type(tb2)=="table" then
	tbr={};
	i=1;
		for x= 1,#tb1 do
		 	n = t[x];
			for j= 1,#tb2 do
				s = String.Compare(n, t2[j]);
				if s == 0 then
					tr[i]=n;
				    i=i+1;
				end
			end
		end
		if #tr<1 then
		tr=nil;
		end
		return tbr;
	else
		return nil;
	end
end
tb = tblcompare(t,t2)

Debug.ShowWindow(true)
Debug.Print(ptbl(tb));
La funcion ptbl que imprime la tabla la encontraras aqui gracias al compañero webultra , es muy practica para imprimir tablas , espero te sirva .
Gracias. He unido los dos códigos, pero en el tuyo me da error en:

for x= 1,#t do

Y no funciona
si si fallo mio sorry, ya esta arreglado
Hola, sorry pero me sigue fallando en:
n = t[x];
for j= 1,#tb2 do
s = String.Compare(n, t2[j]);
Seguramente tambien falle en "tr".
cambia n=tb1[x]
no mms, ese wey ni lee los codigos para tratar de entenderlos y arreglarlos aun cuando le has dado todo en bandeja de plata (digo, pongale un poco de heuvos no?). whatever, cambie un poco tu funcion rafax para qeu sea mas pro>

t1={"a1", "a2", "a3"};
t2={"a8", "a2", "a5","a23","a3", "a11"};
function table.compare(tb1,tb2)
     if type(tb1)=="table" and type(tb2)=="table" then
        local tbr={};
        local a = (#tb1>#tb2) and tb1 or tb2;
        local b = (#tb1>#tb2) and tb2 or tb1;
        for index, value in pairs(a) do
             local bf = false;
             for k, v in pairs(b) do
                if (v == value) then
                    bf = true;
                end
             end
             if not bf then
                 table.insert(tbr, #tbr+1, value);
             end
        end
        return tbr;
     else
        return nil;
     end
end
tb = table.compare(t1,t2);
XD es lo que hay , gracias por tu funcion.
ey ey... que yo no soy ningun programador ni nada, sino no estaria pidiendo ayuda...

Habia que modificar todo el codigo añadiendo "b", que se te habian olvidado. Pero bueno, muchas gracias.

Lo que he comprobado es que el codigo es demasiado lento, me tarda mas de 40 segundos en completarse, cuando usando un Listbox para cargar la primera tabla y luego el Listbox.find para crear la tercera tabla, me tardaba apenas un par de segundos. Pero queria ver si era posible hacerlo mas rapido y sin usar un listbox de por medio.

Voy a probar el codigo del otro compañero a ver. Gracias a los dos ;)
gracias bro!