Тестовая структура:
CREATE TABLE a (
id INT
);
CREATE TABLE b (
id INT,
a_id INT,
sum INT
);
INSERT INTO a SET id=1;
INSERT INTO b SET id=1, a_id=1, sum=2;
INSERT INTO b SET id=2, a_id=1, sum=3;
Надо в один селект получить для каждой строки из a
количество записей из b
с a_id
равным id текущей строки, и сумму всех полей sum. Если таких записей нет, строка из a
все равно должна оставаться в выдаче.
Как писать не представляю совсем, кроме того, что с join
.
Пример выдачи:
id -- count(*) -- sum(sum)
1 -- 2 -- 5
В принципе всё ровно так, как вы и написали в условии: считаются count
и sum
группируя по a_id
. А в целом таблица а
джойнит как раз-таки ту таблицу с группировкой.
SELECT a.id, tmp.*
FROM a
LEFT JOIN (SELECT b.a_id, COUNT(b.a_id) as `count`, SUM(`sum`) as summa
FROM b
GROUP BY b.a_id
) tmp
ON tmp.a_id = a.id
В итоге если для a
нет записей в b
- то там будут null
http://sqlfiddle.com/#!9/35471b/8
SELECT `a`.`id`, SUM(`b`.`sum`), COUNT(*)
FROM `a`
LEFT JOIN `b` ON `a`.`id`=`b`.`a_id`
GROUP BY `a`.`id`;
На фидле получил результат как у вас
В DB есть файл изображение в виде массива байтов, который нужно отдать клиенту через сервлетВ nio есть конструкция в Files
Всем приветВозник вопрос в том как использовать значения внутренних классов
Как можно предложить пользователю принять лицензионное соглашение, до запуска программы?