Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE e_type (
- typeID INTEGER PRIMARY KEY,
- name VARCHAR(255) UNIQUE NOT NULL
- );
- CREATE TABLE e_field (
- fieldID INTEGER PRIMARY KEY,
- typeID INTEGER NOT NULL,
- name VARCHAR(255) NOT NULL,
- UNIQUE (typeID, name)
- );
- CREATE TABLE e_entity (
- entityID INTEGER PRIMARY KEY,
- typeID INTEGER NOT NULL,
- name VARCHAR(255) NOT NULL,
- UNIQUE (typeID, name)
- );
- CREATE TABLE e_entity_value (
- entityID INTEGER NOT NULL,
- fieldID INTEGER NOT NULL,
- VALUE BLOB,
- PRIMARY KEY (entityID, fieldID)
- );
- INSERT INTO e_type (name) VALUES ('person');
- INSERT INTO e_entity (typeID, name) VALUES (1, 'foo');
- INSERT INTO e_entity (typeID, name) VALUES (1, 'bar');
- INSERT INTO e_field (typeID, name) VALUES (1, 'height');
- INSERT INTO e_field (typeID, name) VALUES (1, 'weight');
- INSERT INTO e_field (typeID, name) VALUES (1, 'age');
- INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (1, 1, "5'11""");
- INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (2, 1, "5'6""");
- INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (1, 2, "200lbs");
- INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (2, 2, "120lbs");
- INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (1, 3, "28");
- INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (2, 3, "17");
- SELECT e.name, a.VALUE AS age, h.VALUE AS height, w.VALUE AS weight
- FROM e_entity e
- LEFT JOIN e_field fa ON fa.name='age' AND fa.typeID=e.typeID
- LEFT JOIN e_entity_value a ON a.fieldID=fa.fieldID AND a.entityID=e.entityID
- LEFT JOIN e_field fh ON fh.name='height' AND fh.typeID=e.typeID
- LEFT JOIN e_entity_value h ON h.fieldID=fh.fieldID AND h.entityID=e.entityID
- LEFT JOIN e_field fw ON fw.name='weight' AND fw.typeID=e.typeID
- LEFT JOIN e_entity_value w ON w.fieldID=fw.fieldID AND w.entityID=e.entityID
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement