mandry
Новичок
Имеется:
1) object: ID
2) licence: ID, objectID
3) term: licenceID для allow, objectID для used
В term.objectID ссылается на совершенно другой object (который отличается от object в licence), для которого устанавливается значение used
Значение allow устанавливается для object, который находится в licence, и связь получается через таблицу licence
Нужно вывести одним запросом:
1) Значение allow:
SELECT object.ID, SUM(term.allow)
FROM object
LEFT JOIN licence ON licence.objectID=object.ID
LEFT JOIN term ON term.licenceID=licence.ID
GROUP BY object.ID
2) Значение used:
SELECT object.ID, SUM(term.used)
FROM object
LEFT JOIN term ON term.objectID=object.ID
GROUP BY object.ID
3) Булевское overflow:
CASE
WHEN allow>used THEN 1
ELSE 0
END overflow
Обязательно нужно иметь возможность сортировать результаты по allow и used, и фильтровать результаты по overflow (overflow=1 or 0)
Был бы очень благодарен за помощь!
Сейчас запрос следующий, но не считает allow, и нельзя ни сортировать, ни фильтровать результат
SELECT
(SELECT sum(term.used)
FROM term
LEFT JOIN licence
ON licence.ID=term.licenceID
WHERE term.objectID=objectID) used,
(SELECT sum(term.allow)
FROM term
WHERE term.licenceID=licence.ID) allow,
CASE
WHEN allow<used then 1
ELSE 0
END overflow
FROM object
LEFT JOIN licence
ON licence.objectID=object.ID
GROUP BY a.id
1) object: ID
2) licence: ID, objectID
3) term: licenceID для allow, objectID для used
В term.objectID ссылается на совершенно другой object (который отличается от object в licence), для которого устанавливается значение used
Значение allow устанавливается для object, который находится в licence, и связь получается через таблицу licence
Нужно вывести одним запросом:
1) Значение allow:
SELECT object.ID, SUM(term.allow)
FROM object
LEFT JOIN licence ON licence.objectID=object.ID
LEFT JOIN term ON term.licenceID=licence.ID
GROUP BY object.ID
2) Значение used:
SELECT object.ID, SUM(term.used)
FROM object
LEFT JOIN term ON term.objectID=object.ID
GROUP BY object.ID
3) Булевское overflow:
CASE
WHEN allow>used THEN 1
ELSE 0
END overflow
Обязательно нужно иметь возможность сортировать результаты по allow и used, и фильтровать результаты по overflow (overflow=1 or 0)
Был бы очень благодарен за помощь!
Сейчас запрос следующий, но не считает allow, и нельзя ни сортировать, ни фильтровать результат
SELECT
(SELECT sum(term.used)
FROM term
LEFT JOIN licence
ON licence.ID=term.licenceID
WHERE term.objectID=objectID) used,
(SELECT sum(term.allow)
FROM term
WHERE term.licenceID=licence.ID) allow,
CASE
WHEN allow<used then 1
ELSE 0
END overflow
FROM object
LEFT JOIN licence
ON licence.objectID=object.ID
GROUP BY a.id