オブジェクトのテーブル、属性を定義するテーブル、およびオブジェクトの属性値を含むテーブルがあります。
OBJECTS:
ID | ...
----+-----
1 | ...
2 | ...
ATTRIBUTES:
KEY | DEFAULT
-----+---------
a1 | xyz
a2 | abc
a3 | 123
OBJECT_ATTRIBUTES:
OBJECT_ID | KEY | VALUE
-----------+------+-------
1 | a1 | abcd
1 | a2 | xyzw
2 | a3 | 12345
したがって、各オブジェクトはその属性の値を定義できます。それ以外の場合はdefault
、その属性の を使用する必要があります。
ここで、すべてのオブジェクトをすべての属性に結合し、レコードが存在しないときはdefault
いつでも置換する select が必要です。OBJECT_ATTRIBUTES
INTENDED QUERY RESULT:
OBJECT_ID | ... | KEY | VALUE
-----------+------+------+-------
1 | ... | a1 | abcd
1 | | a2 | xyzw
1 | | a3 | 123 <- filled in default
2 | | a1 | xyz <- filled in default
2 | | a2 | abc <- filled in default
2 | | a3 | 12345
SQLでこれを行うにはどうすればよいですか?
折りたたみの下: 今は選択するだけです
SELECT * FROM OBJECT LEFT JOIN OBJECTS_ATTRIBUTES ON ID = OBJECT_ID
ただし、空白を手動で入力する必要があります。