If you want to use the Campaign as the filter element, then as I see it, you'd want to implement many-to-many. The reason being, your campaign has two (2) dates, but based on what I've seen/heard, your joining (in the model) only on one (sounds like end date).
Otherwise, the MDX would need to simply be filtered using the (assumed known) start and end dates for a given campaign - i.e. *you* need to know those dates and manually specify them. This will obviously *not* work for a non tech end user situation. Again, IMO, if you want it to work for end usrs, get a many to many relationship going (using a bridging table) between Campaign -> Bridge <- Date.
A possible alternative to above, is to try to use the properties of the selected Campaign (eg have start and End date as attributes) and then striing them into the SELECT statement, sort of like "SELECT ........ FROM ..... WHERE[Date].[Date].' + CSTR(GetMePropertyromAttibutehere) + ':' + CStr(GetmeEndDatePropertyValuehere()) I haven't one this, but imagine it's possible.