%% select([[a,b,c],[d,e,f]],a,b,Result). %% Result = [[a,b],[d,e]] select(Table,Attribute,Value,Result) :- delete(Table,Column,RestOfColumns), Column=[Attribute|_Rest], select1(Column,RestOfColumns,Result). select1([Item|Column],RestOfColumns,Result) :- get_heads(RestOfColumns