SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.05.2010 17:21:58

Natali
Участник
Зарегистрирован: 07.05.2010
Сообщений: 6

Запросы из 2 таблиц

Пожалуйста!!!!!Помогите кто нибудь с запросами. есть 2 таблицы.

R1(ФИО клиента, N филиала, N счета, Остаток),
R2(N филиала, Район)

Базу создала. Осталось запросы составить и в делфи кинуть все. Ну закинуть не проблемма.

А вот запросы не могу запросы составить.
a. Филиалы, клиенты которых не имеют счетов в других филиалах.
b. Клиентов, которые имеют счета во всех филиалах данного банка.
c. Клиентов, которые имеют только один счет в одном филиале банка.
d. Клиенты, которые имеют счета в нескольких филиалах банка, расположенных только в одном районе.

Неактивен

 

#2 07.05.2010 23:10:15

Артём Н.
Активист
Зарегистрирован: 03.11.2009
Сообщений: 156

Re: Запросы из 2 таблиц

Чего-то мне это напоминает... :-\ Курсовая? Или просто аттестация?

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"... big_smile


"И ни птица, ни ива слезы не прольет,
Если сгинет с земли человеческий род.
И весна, и весна встретит новый рассвет,
Не заметив, что нас уже нет..."

Неактивен

 

#3 08.05.2010 11:17:51

Natali
Участник
Зарегистрирован: 07.05.2010
Сообщений: 6

Re: Запросы из 2 таблиц

Спасибо и за это. Это не курсовая. Это подготовка к госам. Билеты решаю.

Неактивен

 

#4 08.05.2010 12:24:40

Артём Н.
Активист
Зарегистрирован: 03.11.2009
Сообщений: 156

Re: Запросы из 2 таблиц

Хм... А ГОСы по какому предмету?

Очень своеобразные таблицы, если они в билетах представлены.
По-моему, тут нет ничего о банках.
Кстати, наверное, всё-таки, здесь какое-то другое решение предполагается, без having.

И во втором случае, я не факт, что правильно сделал...

Отредактированно Артём Н. (08.05.2010 12:29:06)


"И ни птица, ни ива слезы не прольет,
Если сгинет с земли человеческий род.
И весна, и весна встретит новый рассвет,
Не заметив, что нас уже нет..."

Неактивен

 

#5 08.05.2010 13:14:35

Natali
Участник
Зарегистрирован: 07.05.2010
Сообщений: 6

Re: Запросы из 2 таблиц

госы у нас повсем предметам идут. ВД, программирование в делфи и тд. и тп. А скажите может этот билет яснее

Даны отношения, моделирующие работу туристического агентства, имеющего много филиалов в различных странах:
R1(Филиал, Страна, Город),
R2(Клиент, Страна, Номер договора),
R3(Номер договора, Филиал, Дата начала, Дата окончания)
Найти:
a.    Клиентов, заключивших договоры с несколькими филиалами.
b.    Филиалы, которые работают с клиентами только одной страны.
c.    Клиентов, которые заключили несколько договоров с одним филиалом.
d.    Филиалы, которые заключили договоры только с клиентами из той же станы, в которой расположен этот филиал.

а осталные по образцу попытаюсь докумекать.

Неактивен

 

#6 08.05.2010 14:48:04

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Запросы из 2 таблиц

Natali написал:

Пожалуйста!!!!!Помогите кто нибудь с запросами. есть 2 таблицы.

R1(ФИО клиента, N филиала, N счета, Остаток),
R2(N филиала, Район)

Базу создала. Осталось запросы составить и в делфи кинуть все. Ну закинуть не проблемма.

А вот запросы не могу запросы составить.
a. Филиалы, клиенты которых не имеют счетов в других филиалах.
b. Клиентов, которые имеют счета во всех филиалах данного банка.
c. Клиентов, которые имеют только один счет в одном филиале банка.
d. Клиенты, которые имеют счета в нескольких филиалах банка, расположенных только в одном районе.

Предложу и свои варианты ответа smile

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

Неактивен

 

#7 08.05.2010 18:48:47

Natali
Участник
Зарегистрирован: 07.05.2010
Сообщений: 6

Re: Запросы из 2 таблиц

шо такое GROUP_CONCAT ? первый раз вижу

Неактивен

 

#8 08.05.2010 18:50:20

Natali
Участник
Зарегистрирован: 07.05.2010
Сообщений: 6

Re: Запросы из 2 таблиц

у меня 1 и 3 выполняются а 2 и 4 не хотят. Пишут синтаксическую ошибку

Неактивен

 

#9 10.05.2010 12:42:36

stydent
Участник
Зарегистрирован: 10.05.2010
Сообщений: 1

Re: Запросы из 2 таблиц

Natali написал:

Даны отношения, моделирующие работу туристического агентства, имеющего много филиалов в различных странах:
Найти:

Добрый день.
Даны точно такие же отношения, при этом номер договора уникален по всей базе, клиент может заключать несколько договоров.

R1(Филиал, Страна, Город),                               //Страна, Город - место расположения филиала
R2(Клиент, Страна, Номер договора),                  //Страна - место проживания клиента
R3(Номер договора, Филиал, Дата начала, Дата окончания)

Составил 10 требуемых запросов, а последний не получается:
"Клиенты, которые заключили договор ровно с тремя филиалами".
Подскажите, пожалуйста.

Неактивен

 

#10 11.05.2010 12:04:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Запросы из 2 таблиц

Natali написал:

у меня 1 и 3 выполняются а 2 и 4 не хотят. Пишут синтаксическую ошибку

А текст ошибки постеснялись написать? smile

Неактивен

 

#11 11.05.2010 12:08:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Запросы из 2 таблиц

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

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson