У меня есть два отдельных запроса, оба из которых работают.Объединение двух сложных запросов
SELECT MAX(instances)
FROM (
SELECT FK_Hour, day As day, Count(FK_Hour) As instances
FROM (
Select slottime.FK_Hour, time.day
From slottime INNER JOIN time ON slottime.FK_Hour = time.Hour
) As C
GROUP By FK_Hour
) AS counts
GROUP By day
и
Select slot.SlotNo As FK_SlotNo
FROM
(Programme INNER JOIN Module
ON Programme.COURSE = Module.FK_Course)
INNER JOIN (Slot
INNER JOIN SlotDemo ON Slot.SlotNo = SlotDemo.FK_SlotNo)
ON Module.ModuleCode = Slot.FK_ModuleCode
GROUP BY Slot.SlotNo, Programme.C_val
HAVING (((Count(SlotDemo.FK_Demonstrator))<5) AND ((Programme.C_val)<6))
Первый запрос является мясо материи, но я ищу, чтобы уточнить свои результаты (с использованием второго запроса).
Однако результат немного беспорядка (и, без каких-либо огромных сюрпризов, не работает):
SELECT MAX(instances)
FROM (SELECT FK_Hour, day As day, Count(FK_Hour) As instances
FROM (Select slottime.FK_Hour, slottime.FK_SlotNo, time.day
From slottime INNER JOIN time ON slottime.FK_Hour = time.Hour)
FROM (Select slot.SlotNo As FK_SlotNo
FROM (Programme INNER JOIN Module ON Programme.COURSE = Module.FK_Course) INNER JOIN (Slot INNER JOIN SlotDemo ON Slot.SlotNo = SlotDemo.FK_SlotNo) ON Module.ModuleCode = Slot.FK_ModuleCode
GROUP BY Slot.SlotNo, Programme.C_val
HAVING (((Count(SlotDemo.FK_Demonstrator))<5) AND ((Programme.C_val)<6)))
As C GROUP By FK_Hour
)
AS counts GROUP By day
Yikes.
Не может не чувствовать, что я собираюсь сделать это совершенно неправильно. Должен ли я пытаться объединить два запроса - или что-то совсем другое?
Примечание это база данных MySQL, вид отношения доступа только для иллюстрации.
Первый запрос действительно не имеет большого смысла. Вы просто получите неопределенный (обычно «последний») «день» из внутреннего «GROUP BY», который вы позже используете для внешнего «GROUP BY»; и самый внутренний запрос фактически не должен быть подзапросом того, кто его охватывает. – Uueerdo
@Uueerdo Нет, он действительно работает - он возвращает число на каждый день, что действительно то, что я ищу. Я тестировал его с образцовыми данными, и, похоже, с ним не было никаких проблем. – Stumbler
Какую базу данных вы используете?Если ваш db поддерживает CTE, это может быть хорошим вариантом. – keberwein