Задавайте вопросы, мы ответим
Вы не зашли.
Пожалуйста!!!!!Помогите кто нибудь с запросами. есть 2 таблицы.
R1(ФИО клиента, N филиала, N счета, Остаток),
R2(N филиала, Район)
Базу создала. Осталось запросы составить и в делфи кинуть все. Ну закинуть не проблемма.
А вот запросы не могу запросы составить.
a. Филиалы, клиенты которых не имеют счетов в других филиалах.
b. Клиентов, которые имеют счета во всех филиалах данного банка.
c. Клиентов, которые имеют только один счет в одном филиале банка.
d. Клиенты, которые имеют счета в нескольких филиалах банка, расположенных только в одном районе.
Неактивен
Чего-то мне это напоминает... :-\ Курсовая? Или просто аттестация?
a. Филиалы, клиенты которых не имеют счетов в других филиалах.
== "Филиалы клиентов, которые имеют счета только в одном филиале."
select * from R1 group by N филиала having count(distinct N филиала) = 1;
Если не ошибся.
+ Только в одном банке. Банки здесь не учитываются.
b. Клиентов, которые имеют счета во всех филиалах данного банка.
Банк определяется по району?
Тогда, для разных банков может быть несколько филиалов, с одинаковыми номерами.
Типа такого:
N филиала, Район: {1, 'Московский'}, {2, 'Московский'}, {1, 'Западный'}.
В таблице клиента не хранится данных о банке.
Поэтому, такой запрос нельзя составить.
c. Клиентов, которые имеют только один счет в одном филиале банка.
select * from R1 group by N филиала having (count(distinct N счета) = 1) and (count(distinct N филиала) = 1);
d. Клиенты, которые имеют счета в нескольких филиалах банка, расположенных только в одном районе.
Не, может, конечно, я совсем слепой, тупой и не выспался... Но я не вижу тут ничего о банке.
Или номера филиала уникальны и закодированы, используя некий классификатор?
P.S.: "гугл" шустр последнее время: натали, татали, "Access"...
Неактивен
Спасибо и за это. Это не курсовая. Это подготовка к госам. Билеты решаю.
Неактивен
Хм... А ГОСы по какому предмету?
Очень своеобразные таблицы, если они в билетах представлены.
По-моему, тут нет ничего о банках.
Кстати, наверное, всё-таки, здесь какое-то другое решение предполагается, без having.
И во втором случае, я не факт, что правильно сделал...
Отредактированно Артём Н. (08.05.2010 12:29:06)
Неактивен
госы у нас повсем предметам идут. ВД, программирование в делфи и тд. и тп. А скажите может этот билет яснее
Даны отношения, моделирующие работу туристического агентства, имеющего много филиалов в различных странах:
R1(Филиал, Страна, Город),
R2(Клиент, Страна, Номер договора),
R3(Номер договора, Филиал, Дата начала, Дата окончания)
Найти:
a. Клиентов, заключивших договоры с несколькими филиалами.
b. Филиалы, которые работают с клиентами только одной страны.
c. Клиентов, которые заключили несколько договоров с одним филиалом.
d. Филиалы, которые заключили договоры только с клиентами из той же станы, в которой расположен этот филиал.
а осталные по образцу попытаюсь докумекать.
Неактивен
Natali написал:
Пожалуйста!!!!!Помогите кто нибудь с запросами. есть 2 таблицы.
R1(ФИО клиента, N филиала, N счета, Остаток),
R2(N филиала, Район)
Базу создала. Осталось запросы составить и в делфи кинуть все. Ну закинуть не проблемма.
А вот запросы не могу запросы составить.
a. Филиалы, клиенты которых не имеют счетов в других филиалах.
b. Клиентов, которые имеют счета во всех филиалах данного банка.
c. Клиентов, которые имеют только один счет в одном филиале банка.
d. Клиенты, которые имеют счета в нескольких филиалах банка, расположенных только в одном районе.
Предложу и свои варианты ответа
a1. Филиалы, в которых есть клиенты, не имеющие счетов в других филиалах
SELECT DISTINCT branch
FROM R1
GROUP BY client
HAVING COUNT(*) = 1;
a2. Филиалы, все клиенты которых не имеют счетов в других филиалах
SELECT DISTINCT branch
FROM R1
WHERE branch NOT IN (
SELECT x1.branch
FROM R1 x1, R1 x2
WGERE x1.client = x2.client AND x1.branch != x2.branch)
b.
SELECT client
FROM R1
GROUP BY client
HAVING GROUP_CONCAT(branch ORDER BY branch) = (SELECT GROUP_CONCAT(DISTINCT branch ORDER BY branch) FROM R1)
c.
SELECT client
FROM R1
GROUP BY client
HAVING COUNT(*) = 1
d.
SELECT client
FROM R1 JOIN R2 USING (branch)
GROUP BY client
HAVING COUNT(*) > 1 AND COUNT(DISTINCT district) = 1
Неактивен
шо такое GROUP_CONCAT ? первый раз вижу
Неактивен
у меня 1 и 3 выполняются а 2 и 4 не хотят. Пишут синтаксическую ошибку
Неактивен
Natali написал:
Даны отношения, моделирующие работу туристического агентства, имеющего много филиалов в различных странах:
Найти:
Добрый день.
Даны точно такие же отношения, при этом номер договора уникален по всей базе, клиент может заключать несколько договоров.
R1(Филиал, Страна, Город), //Страна, Город - место расположения филиала
R2(Клиент, Страна, Номер договора), //Страна - место проживания клиента
R3(Номер договора, Филиал, Дата начала, Дата окончания)
Составил 10 требуемых запросов, а последний не получается:
"Клиенты, которые заключили договор ровно с тремя филиалами".
Подскажите, пожалуйста.
Неактивен
Natali написал:
у меня 1 и 3 выполняются а 2 и 4 не хотят. Пишут синтаксическую ошибку
А текст ошибки постеснялись написать?
Неактивен
stydent написал:
Составил 10 требуемых запросов, а последний не получается:
"Клиенты, которые заключили договор ровно с тремя филиалами".
Подскажите, пожалуйста.
SELECT R2.client, COUNT(DISTINCT R3.branch) AS branches
FROM R2 JOIN R3 USING (pact_nr)
GROUP BY R2.client
HAVING branches = 3
Неактивен