Posted to tcl by pooryorick at Sun Feb 07 21:57:38 GMT 2016view raw

  1. package require sqlite3
  2.  
  3. sqlite3 [namespace current]::db :memory:
  4.  
  5. db eval {
  6. create table if not exists eav (
  7. id integer primary key autoincrement
  8. ,entity numeric
  9. ,attribute text
  10. ,value
  11. )
  12. ; insert into eav values
  13. (3 ,1 ,'name' ,'Imogen')
  14. ,(5 ,1 ,'gender' ,'female')
  15. ,(6,1 ,'son' ,'Guiderius')
  16. ,(7,1 ,'son' ,'Arvirargus')
  17. }
  18.  
  19. set pattern0 1
  20. set report2 name
  21. set report3 gender
  22.  
  23. puts [db eval {
  24. select distinct eav.* from eav
  25. join eav as eav0 on eav.entity == eav0.entity
  26. and eav0.entity == :pattern0 where eav.attribute == :report2
  27. union
  28. select distinct eav.* from eav
  29. join eav as eav0 on eav.entity == eav0.entity
  30. and eav0.entity == :pattern0 where eav.attribute == :report3
  31. order by eav.id
  32. }]
  33.  

Comments

Posted by pooryorick at Sun Feb 07 21:58:43 GMT 2016 [text] [code]

On my system, this produces: 3 1 name Imogen 5 1 gender female 5 1 1 female