Вы не можете сделать это, потому что эта структура JSON недопустима:
"hotels": { "hotel_id": 9036, "name": "My Hotel Name", ... }, { ... }
Однако вы можете выбрать только значения и сериализовать их:
hotels.Values;
Чтобы получить это:
"hotels": [ { "hotel_id": 9036, "name": "My Hotel Name", ... }, { ... } ]
Учитывая, что это часть класса, вам понадобится новая модель:
public class SomeName
{
public List<Hotel> Hotels { get; set; }
}
var someName = new SomeName
{
Hotels = hotels.Values.ToList();
};
SELECT (
SELECT COUNT(*)
FROM tab1
) AS count1,
(
SELECT COUNT(*)
FROM tab2
) AS count2
FROM dual
Если таблицы (или по крайней мере столбец ключа) имеют тот же тип, просто делают объединение сначала и затем рассчитывают.
select count(*)
from (select tab1key as key from schema.tab1
union all
select tab2key as key from schema.tab2
)
Или берут Ваш satement и помещают другую сумму () вокруг этого.
select sum(amount) from
(
select count(*) amount from schema.tab1 union all select count(*) amount from schema.tab2
)
Быстрый удар придумал:
Select (select count(*) from Table1) as Count1, (select count(*) from Table2) as Count2
Примечание: Я протестировал это в SQL Server, таким образом From Dual
не необходимо (следовательно несоответствие).
select (select count(*) from tab1) count_1, (select count(*) from tab2) count_2 from dual;
Поскольку я не вижу, что любой другой ответ поднимает это.
, Если Вам не нравятся подзапросы и , имеют первичные ключи в каждой таблице, можно сделать это:
select count(distinct tab1.id) as count_t1,
count(distinct tab2.id) as count_t2
from tab1, tab2
, Но производительность, мудрая, я полагаю, что решение Quassnoi лучше, и то, которое я использовал бы.
Другие немного отличающиеся методы:
with t1_count as (select count(*) c1 from t1),
t2_count as (select count(*) c2 from t2)
select c1,
c2
from t1_count,
t2_count
/
select c1,
c2
from (select count(*) c1 from t1) t1_count,
(select count(*) c2 from t2) t2_count
/
Мой опыт с SQL Server, но могли Вы делать:
select (select count(*) from table1) as count1,
(select count(*) from table2) as count2
В SQL Server я получаю результат, который Вы после.
Просто, потому что это немного отличается:
SELECT 'table_1' AS table_name, COUNT(*) FROM table_1
UNION
SELECT 'table_2' AS table_name, COUNT(*) FROM table_2
UNION
SELECT 'table_3' AS table_name, COUNT(*) FROM table_3
Это дает транспонированные ответы (одна строка на таблицу вместо одного столбца), иначе я не думаю, что это очень отличается. Я думаю мудрый производительностью, они должны быть эквивалентными.
Как дополнительная информация, для выполнения того же самого в SQL Server просто необходимо удалить "ИЗ двойной" части запроса.
SELECT (SELECT COUNT (*) FROM table1) + (SELECT COUNT (*) FROM table2) FROM dual;
Вот от меня к share
Вариант 1 - подсчет из одного домена из другой таблицы
select distinct(select count(*) from domain1.table1) "count1", (select count(*) from domain1.table2) "count2"
from domain1.table1, domain1.table2;
Вариант 2 - подсчет из другого домена для одной и той же таблицы
select distinct(select count(*) from domain1.table1) "count1", (select count(*) from domain2.table1) "count2"
from domain1.table1, domain2.table1;
Вариант 3 - подсчет из другого домена для одной и той же таблицы с «объединением всех», чтобы было количество строк
select 'domain 1'"domain", count(*)
from domain1.table1
union all
select 'domain 2', count(*)
from domain2.table1;
Наслаждайтесь SQL, я всегда делаю это :)
Для большей полноты - этот запрос создаст запрос, чтобы дать вам количество всех таблиц для данного владельца.
select
DECODE(rownum, 1, '', ' UNION ALL ') ||
'SELECT ''' || table_name || ''' AS TABLE_NAME, COUNT(*) ' ||
' FROM ' || table_name as query_string
from all_tables
where owner = :owner;
Результат выглядит примерно так:
SELECT 'TAB1' AS TABLE_NAME, COUNT(*) FROM TAB1
UNION ALL SELECT 'TAB2' AS TABLE_NAME, COUNT(*) FROM TAB2
UNION ALL SELECT 'TAB3' AS TABLE_NAME, COUNT(*) FROM TAB3
UNION ALL SELECT 'TAB4' AS TABLE_NAME, COUNT(*) FROM TAB4
Вы можете запустить его, чтобы получить счет. Это просто удобный сценарий, который иногда можно иметь под рукой.