Текущий архив: 2004.04.04;
Скачать: CL | DM;
Вниз
SQL запрос из трех баз Найти похожие ветки
← →
Алексей (2004-03-03 03:15) [0]Уважаемые мастаки. Помогите пожалуйста!!!
Есть три базы в Access:
SHIPS CLASSES OUTCOMES
------ -------- ---------
name class ship
class resutl
Отношения: SHIPS.name - OUTCOMES.ship, SHIPS.class - CLASSES.class
Нужно для каждого class в CLASSES, имеющего не менее трех name в
SHIPS, определить количество name этого class, у которых OUTCOMES.result = TRUE.
Вывести: class - количество.
В запросе есть повторяющиеся class. Как убрать повторения?SELECT ships.class, (SELECT count(*) FROM outcomes WHERE outcomes.ship = ships.name and outcomes.result = "TRUE")
FROM ships
WHERE ships.name in (
SELECT outcomes.ship
FROM outcomes
WHERE outcomes.result = "sunk" AND OUTCOMES.ship in (
SELECT ships.name
FROM ships
WHERE ships.class IN (
SELECT class
FROM classes
WHERE 2 < (
SELECT count(*)
FROM ships
WHERE classes.class = ships.class))))
← →
ЮЮ © (2004-03-03 04:07) [1]>Нужно для каждого class в CLASSES, имеющего не менее трех name в SHIPS
SELECT class COUNT(name) cnt FROM SHIPS GROUP BY name HAVING COUNT(name)> 2
>у которых OUTCOMES.result = TRUE.
SELECT name, class
FROM
Ships
LEFT JOIN Outcomess ON Ships.name= Outcomes.ship
WHERE
Outcomes.Result = "TRUE"
> определить количество name этого class
SELECT Classes3.Class, Count(Name) Cnt
FROM
(
SELECT class COUNT(name) cnt
FROM SHIPS GROUP BY name HAVING COUNT(name)> 2
) Classes3
LEFT JOIN
(
SELECT Ships.name, Ships.class
FROM
Ships
LEFT JOIN Outcomess ON Ships.name= Outcomes.ship
WHERE Outcomes.Result = "TRUE"
) Names
ON Classes3.class = Names.class
GROUP by Classes3.Class
← →
ЮЮ © (2004-03-03 06:25) [2]Сорри, первый подзапрос, конечно:
SELECT class FROM SHIPS GROUP BY class HAVING COUNT(name)> 2
← →
SPIRIT © (2004-03-03 06:27) [3]и что работает ??? прямо из трех баз ?? :))
← →
Алексей (2004-03-04 00:13) [4]Большое спасибо. Все работает на ура!
Страницы: 1 вся ветка
Текущий архив: 2004.04.04;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.06 c