Запрос на получение общей суммы стоимости в зависимости от многих идентификаторов? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть 2 таблицы, первая таблица - это апартаменты, и у нее есть идентификатор квартиры, а другая таблица - комнаты и имеет идентификатор комнаты, я пытаюсь получить общее количество комнат на квартиру, но моя проблема в том, что общая сумма не Это значение само по себе, в таблице комнаты есть строка для каждого настраиваемого значения комнаты, поэтому, если я запустил что-то вроде этого SELECT * FROM Rooms, я получу все такие данные

ApartmentID = 1, RoomID = 1, WallPaint = Red et c ...

ApartmentID = 1, RoomID = 2, WallPaint = blue et c ...

Как видите , У меня может быть несколько комнат, принадлежащих к ApartmentID 1

Я хочу получить запрос, который возвращает мне количество комнат для всех идентификаторов квартир, как будто я пытаюсь получить такой ответ от server

ApartmentID 1 имеет 4 комнаты

ApartmentID 2 имеет 3 комнаты

Это всего лишь пример, но, конечно, ответ будет в JSON . Я думал о выполнении запроса INNER JOIN для получения данных, но это дало мне только данные, которые мне нужны для ApartmentID 1, как я l oop через все ApartmentID, и для каждого ApartmentID я получаю общее количество комнат в нем, имея в виду, что я нужно подсчитать все строки для комнат и вернуть сумму как значение

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Используйте COUNT и GROUP BY в запросе:

SELECT ApartmentID, COUNT(RoomId) as RoomsCount FROM Rooms GROUP BY ApartmentID

Это даст вам одну квартиру в строке с общим количеством комнат.

0 голосов
/ 27 мая 2020

Учитывая, что у вас есть таблица для квартир и комнат, вы можете сделать что-то вроде этого:

// Some example data: 
create table Apartments(id integer, name varchar(100));
insert into Apartments(id, name) values(1, "apt 1");
insert into Apartments(id, name) values(2, "apt 2");
insert into Apartments(id, name) values(3, "apt 3");


create table Rooms(id integer, name varchar(100), apt_id int);
insert into Rooms(id, name, apt_id) values(1, "room 1 in apt 1", 1);
insert into Rooms(id, name, apt_id) values(2, "room 2 in apt 1", 1);
insert into Rooms(id, name, apt_id) values(3, "room 3 in apt 2", 2);
insert into Rooms(id, name, apt_id) values(4, "room 4 in apt 1", 1);
insert into Rooms(id, name, apt_id) values(5, "room 5 in apt 2", 2);

// Query to fetch each apartment and count of rooms for each one.
SELECT a.name, 
  (SELECT count(apt_id) 
  FROM `Rooms` r 
  WHERE r.apt_id = a.id) count
FROM `Apartments` a;

// Results:
apt 1:  3
apt 2:  2
apt 3:  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...