Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.83 KB | None | 0 0
  1. CREATE TABLE e_type (
  2.     typeID INTEGER PRIMARY KEY,
  3.     name VARCHAR(255) UNIQUE NOT NULL
  4. );
  5.  
  6. CREATE TABLE e_field (
  7.     fieldID INTEGER PRIMARY KEY,
  8.     typeID INTEGER NOT NULL,
  9.     name VARCHAR(255) NOT NULL,
  10.     UNIQUE (typeID, name)
  11. );
  12.  
  13. CREATE TABLE e_entity (
  14.     entityID INTEGER PRIMARY KEY,
  15.     typeID INTEGER NOT NULL,
  16.     name VARCHAR(255) NOT NULL,
  17.     UNIQUE (typeID, name)
  18. );
  19.  
  20. CREATE TABLE e_entity_value (
  21.     entityID INTEGER NOT NULL,
  22.     fieldID INTEGER NOT NULL,
  23.     VALUE BLOB,
  24.     PRIMARY KEY (entityID, fieldID)
  25. );
  26.  
  27. INSERT INTO e_type (name) VALUES ('person');
  28. INSERT INTO e_entity (typeID, name) VALUES (1, 'foo');
  29. INSERT INTO e_entity (typeID, name) VALUES (1, 'bar');
  30. INSERT INTO e_field (typeID, name) VALUES (1, 'height');
  31. INSERT INTO e_field (typeID, name) VALUES (1, 'weight');
  32. INSERT INTO e_field (typeID, name) VALUES (1, 'age');
  33. INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (1, 1, "5'11""");
  34. INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (2, 1, "5'6""");
  35. INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (1, 2, "200lbs");
  36. INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (2, 2, "120lbs");
  37. INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (1, 3, "28");
  38. INSERT INTO e_entity_value (entityID, fieldID, VALUE) VALUES (2, 3, "17");
  39.  
  40. SELECT e.name, a.VALUE AS age, h.VALUE AS height, w.VALUE AS weight
  41. FROM e_entity e
  42. LEFT JOIN e_field fa ON fa.name='age' AND fa.typeID=e.typeID
  43. LEFT JOIN e_entity_value a ON a.fieldID=fa.fieldID AND a.entityID=e.entityID
  44. LEFT JOIN e_field fh ON fh.name='height' AND fh.typeID=e.typeID
  45. LEFT JOIN e_entity_value h ON h.fieldID=fh.fieldID AND h.entityID=e.entityID
  46. LEFT JOIN e_field fw ON fw.name='weight' AND fw.typeID=e.typeID
  47. 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