Couldn't taking the subset of a Cartesian product be considered to be dealing with one?
Even if you stick to ordinary (inner) joins, they are pullbacks, not products.
https://en.wikipedia.org/wiki/Pullback