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

package require sqlite3

sqlite3 [namespace current]::db :memory:

db eval {
    create table if not exists eav (
        id integer primary key autoincrement
        ,entity numeric
        ,attribute text
        ,value
    )
    ; insert into eav values 
        (3 ,1 ,'name'    ,'Imogen')
        ,(5 ,1 ,'gender'  ,'female')
        ,(6,1 ,'son'     ,'Guiderius')
        ,(7,1 ,'son'     ,'Arvirargus')
}

set pattern0 1
set report2 name
set report3 gender
 
puts [db eval {
    select distinct eav.* from eav
        join eav as eav0 on eav.entity == eav0.entity
            and eav0.entity == :pattern0 where eav.attribute == :report2
    union
    select distinct eav.* from eav
        join eav as eav0 on eav.entity == eav0.entity
        and eav0.entity == :pattern0 where eav.attribute == :report3 
        order by eav.id 
}]

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