To make a VIEW work, first you need to get a working select. You haven't mastered this step, but you are likely close. The rest follows very quickly.
You are joining 12 tables you say.
The typical join is :
WHERE
tableA.id=tableB.foriegnkeyfromtableA
AND
tableB.id=tableC.foriegnkeyfromtableB
etc.
suppose you're going great guns until you get to tableJ, which by chance has no rows = tableK
If any part of the join has no rows, the result is an empty set.
What you may want is an OUTER JOIN or LEFT JOIN, that is, one that returns rows REGARDLESS of whether an equivalence is found.
I don't know the DB you are using -- MySQL doesn't have views, or at least the version I'm using doesn't. So I can't give you specifics for OUTER or LEFT JOIN statement. I'm just telling you where to look in the manual.
For example:
Person
id name
1 Sam
2 Joe
3 Ted
Phone
personid number
1 1234567
2 999999
SELECT person.name, phone.number FROM person, phone
WHERE person.id=phone.personid
Would return
Joe 1234567
Sam 999999
Note that Ted doesn't have a phone, so in the join, no row is returned for Ted.
I THINK the old Oracle outer join symbol was a *=
SELECT person.name, phone.number FROM person, phone
WHERE person.id*=phone.personid
means "include all person ids and return a NULL If they have no equivalent phone entry"
Returns:
Joe 1234567
Sam 999999
Ted
Get the idea?
From the SELECT, it's one step to a view
or
2 steps to
CREATE TABLE
INSERT INTO Mynewtable SELECT
which is all a view really is.