Как сравнить количество двух таблиц

Возникла проблема при попытке сравнить количество из двух таблиц (используя SQLite).

Предположим, у меня есть такие таблицы, как:

Объекты (NumId равен Основной ключ)

NumIdКатегория_объекта
1постоянный
2заимствованный
3заимствованный
4заимствованный
5заимствованный

заимствовано (NumObj — это Внешний ключ/первичный ключ, ссылающийся на таблицу объектов)

NumObjCollection_name
2коллекция_альфа
3collection_betha
4collection_betha
5collection_betha

Запрос, который мне нужно выполнить:

"What are the collections with higher number of borrowed objects than quantity of permanent objets?"

Моя текущая попытка:

SELECT Collection_name FROM Borrowed
WHERE (SELECT COUNT(Collection_name) FROM Borrowed)> 
(SELECT COUNT(*) FROM Objects WHERE Object_category = 
'permanent')

Он возвращает значения из столбца, но не работает должным образом (должен был вернуть «коллекцию_бета» для владения 3 объектами, что больше, чем количество существующих постоянных объектов, равное 1).

Вы можете условно подсчитать соединение, чтобы получить оба числа.

Serg 05.05.2022 08:56
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
1
32
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я бы использовал здесь условную агрегацию:

SELECT b.Collection_name
FROM Borrowed b
INNER JOIN Objects o
    ON o.NumId = b.NumObj
GROUP BY b.Collection_name
HAVING SUM(o.Object_category = 'borrowed') > SUM(o.Object_category = 'permanent');
Ответ принят как подходящий

Может присоединение поможет

SELECT Borrowed.Collection_name
FROM Borrowed 
JOIN Objects 
ON Objects.NumId= Borrowed.NumObj
GROUP BY Borrowed.Collection_name 
HAVING COUNT(NumObj) > 
(SELECT COUNT(*) FROM Objects WHERE Object_category = 'permanent')

Другие вопросы по теме