What I've read here doesn't quite answer what I'm trying to do. That's why I'm posting a request here and I'm confident to learn what I can do on this subject.
Here are my tables:
Customer:
| ID | Firstname | Lastname |
|----|-----------|----------|
| 1 | John | Lennon |
| 2 | Patti | Smith |
LinkedTable:
| ID | TableName |
|----|-----------|
| 1 | Customer |
LinkedTableField:
| ID | LinkedTableID | FieldName | FieldCaption |
|----|---------------|------------|--------------|
| 1 | 1 | SocksColor | Socks Color |
| 2 | 1 | Married | Married? |
LinkedTableFieldValue:
| ID | LinkedTableID | LinkedTableFieldID | OwnerID | STRValue |
|----|---------------|--------------------|---------|----------|
| 1 | 1 | 1 | 1 | Blue |
| 2 | 1 | 1 | 2 | Purple |
| 3 | 1 | 2 | 1 | Yes |
| 4 | 1 | 2 | 2 | No |
I've built this SQL View by this code:
SELECT LinkedTable.ID,
LinkedTableField.ID,
LinkedTableField.FieldName,
LinkedTableField.FieldCaption,
LinkedTableFieldValue.ID,
LinkedTableFieldValue.OwnerID,
LinkedTableFieldValue.STRValue
FROM ( (LinkedTable INNER JOIN LinkedTableField
ON LinkedTable.ID = LinkedTableField.LinkedTableID
) INNER JOIN LinkedTableFieldValue ON
( (LinkedTableField.ID = LinkedTableFieldValue.LinkedTableFieldID)
AND (LinkedTableField.LinkedTableID = LinkedTableFieldValue.LinkedTableID)
)
) as View1;
The displaying data of View1 is:
| LinkedTableID | LinkedTableFieldID | LinkedTableFieldValueID | FieldName | FieldCaption | OwnerID | STRValue |
|---------------|--------------------|-------------------------|------------|--------------|---------|----------|
| 1 | 1 | 1 | SocksColor | Socks Color | 1 | Blue |
| 1 | 1 | 2 | SocksColor | Socks Color | 2 | Purple |
| 1 | 2 | 3 | Married | Married? | 1 | Yes |
| 1 | 2 | 4 | Married | Married? | 2 | No |
Now, I can list Customer table linked to the View1 by this SQL View:
SELECT Customer.*,
View1.LinkedTableID,
View1.FieldName,
View1.STRValue
FROM (Customer LEFT JOIN View1 ON Customer.ID = View1.OwnerID) AS View2
WHERE View1.LinkedTableID = 1;
Here is the View2 result:
| ID | Firstname | Lastname | FieldName | STRValue |
|----|-----------|----------|------------|----------|
| 1 | John | Lennon | SocksColor | Blue |
| 2 | Patti | Smith | SocksColor | Purple |
| 1 | John | Lennon | Married | Yes |
| 2 | Patti | Smith | Married | No |
At this level, I'm not able to write SQL code to obtain this kind of result:
| ID | Firstname | Lastname | SocksColor | Married |
|----|-----------|----------|------------|---------|
| 1 | John | Lennon | Blue | Yes |
| 2 | Patti | Smith | Purple | No |
At least, is there a way to write a SQL code to display this kind of list under PostgreSQL?
It would be great!
Thank you for your help.