Why the select results is different:Ruby DBI execute VS ActionRecord::Base.connection execute -


when use rails "activerecord::base.connection.execute" method, result return 56 data, data normal, same query in database:

db = activerecord::base.connection sql = "select u.id, u.name, u.email users u join        (select d.user_id testthrees d         left join testtwos m on d.test_name = m.test_name         , d.test_value = m.test_value         m.testone_id in (1)        ) ma        ma.user_id = u.id        group u.id        order u.id desc"  db.execute(sql) 

but when use ruby dbi, result return 54 data, result should return 56 data, result less 2 user data:

 db = dbi.connect("dbi:mysql:test:localhost", "testuser", "testpassword")  sql = "select u.id, u.name, u.email users u join         (select d.user_id testthrees d          left join testtwos m on d.test_name = m.test_name          , d.test_value = m.test_value          m.testone_id in (?)         ) ma         ma.user_id = u.id         group u.id         order u.id desc"   dbh = db.prepare(sql)    dbh.execute(1) 

here relation table:

//table: users create table if not exists `users` (   `id` int(6) unsigned not null,   `name` varchar(100) not null,   `email` varchar(200) not null,   primary key (`id`) ) default charset=utf8;  insert `users` (`id`, `name`, `email`) values   ('1', 'aa', 'aa@gmail.com'),   ('2', 'bb', 'bb@gmail.com'),   ('3', 'cc', 'cc@gmail.com'),   ('4', 'dd', 'dd@gmail.com'),   ('5', 'ee', 'ee@gmail.com'),   ('6', 'ff', 'ff@gmail.com'),   ('7', 'gg', 'gg@gmail.com'),   ('8', 'ii', 'ii@gmail.com'),   ('9', '11', '11@gmail.com'),   ('10', '22', '22@gmail.com'),   ('11', '33', '33@gmail.com'),   ('12', '44', '44@gmail.com'),   ('13', '55', '55@gmail.com'),   ('14', '66', '66@gmail.com'),   ('15', '77', '77@gmail.com'),   ('16', '88', '88@gmail.com');  //table: testones   create table if not exists `testones` (   `id` int(6) unsigned not null,   `one_name` varchar(100) not null,   primary key (`id`) ) default charset=utf8;  insert `testones` (`id`, `one_name`) values   ('1', 'haha'),   ('2', 'hehe'),   ('3', 'lala'),   ('4', 'yaya');  //table: testtwos   create table if not exists `testtwos` (   `id` int(6) unsigned not null,   `testone_id` int(6) unsigned not null,   `test_name` varchar(100) not null,   `test_value` varchar(100) not null,   primary key (`id`) ) default charset=utf8;  insert `testtwos` (`id`, `testone_id`, `test_name`, `test_value`) values   ('1', '1', 'name1', 'value1'),   ('2', '1', 'name2', 'value2'),   ('3', '2', 'name3', 'value3'),   ('4', '2', 'name4', 'value4'),   ('5', '3', 'name5', 'value5'),   ('6', '3', 'name6', 'value6'),   ('7', '4', 'name7', 'value7'),   ('8', '4', 'name8', 'value8'),   ('9', '1', 'name9', 'value9'),   ('10', '2', 'name10', 'value10'),   ('11', '2', 'name11', 'value11'),   ('12', '3', 'name12', 'value12'),   ('13', '1', 'name13', 'value13');  //table: testthrees create table if not exists `testthrees` (   `id` int(6) unsigned not null,   `user_id` int(6) unsigned not null,   `test_name` varchar(100) not null,   `test_value` varchar(100) not null,   primary key (`id`) ) default charset=utf8;  insert `testthrees` (`id`, `user_id`, `test_name`, `test_value`) values   ('1', '1', 'name1', 'value1'),   ('2', '1', 'name2', 'value2'),   ('3', '2', 'name1', 'value1'),   ('4', '5', 'name3', 'value3'),   ('5', '7', 'name3', 'value3'),   ('6', '7', 'name4', 'value4'),   ('7', '7', 'name10', 'value10'),   ('8', '10', 'name11', 'value11'),   ('9', '14', 'name12', 'value12'),   ('10', '13', 'name1', 'value1'); 


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -