sqlite_orm icon indicating copy to clipboard operation
sqlite_orm copied to clipboard

Select in other select

Open OldMen opened this issue 3 years ago • 13 comments

Please tell me how to execute the following query:

select * 
from (
    select *
    from table 
    group by name having max(age)) 
where name = 'Bob';

OldMen avatar Sep 10 '22 08:09 OldMen

hi. Select inside FROM isn't implemented right now. We are thinking about API. If you have any idea you're welcome

fnc12 avatar Sep 10 '22 08:09 fnc12

storage.select( asterisk<Music>(), from( select( ... ) ) ); ?

OldMen avatar Sep 10 '22 08:09 OldMen

@OldMen ok how to specify where name = 'Bob' where name is a column defined inside sub-select?

fnc12 avatar Sep 10 '22 08:09 fnc12

storage.select( asterisk(), from( select( ... ) ), where( ... ) );

OldMen avatar Sep 10 '22 08:09 OldMen

please expand ...

fnc12 avatar Sep 10 '22 08:09 fnc12

storage.select( 
  asterisk<Table>(),
  from( select( asterisk<Table>(), group_by( &Table::name ).having( max( &Table::age ) ) ) ),
  where( is_equal( &Table::name, "Bob ) )
);

OldMen avatar Sep 10 '22 09:09 OldMen

ok it looks nice thanks. What if we need to use aliases inside sub-select and reference to it in the outer WHERE?

fnc12 avatar Sep 10 '22 09:09 fnc12

Я не часто использую алиасы, поэтому не могу сразу рассмотреть проблему. :)

OldMen avatar Sep 10 '22 09:09 OldMen

I can add a support for query provided by you no problem but what to do with queries like this

SELECT departments.department_name, subquery1.latest_hire
FROM departments,
 (SELECT department_id, MAX(hire_date) AS latest_hire
  FROM employees
  GROUP BY department_id) subquery1
WHERE subquery1.department_id = departments.department_id;

?

fnc12 avatar Sep 10 '22 09:09 fnc12

А если попробовать такой интерфейс?

auto subquery1 = storage.subquery( select( asterisk<Table>(), group_by( &Table::name ).having( max( &Table::age ) ) ) );
auto result = storage.select( subquery1.field, from( subquery1 ) );

OldMen avatar Oct 08 '22 07:10 OldMen

@OldMen how to specify WHERE subquery1.department_id = departments.department_id; in your case?

fnc12 avatar Oct 08 '22 11:10 fnc12

@OldMen I like Russian language, I speak it mostly and it is my mother language but please write public issues in English cause open source has to be written in English. If you want to speak Russian let's use email [email protected] instead. Thanks

fnc12 avatar Oct 14 '22 18:10 fnc12

@OldMen are you there?

fnc12 avatar Nov 02 '22 15:11 fnc12