Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Перечислить карты с типами операций, которых по ним не было  [new]
ProbationerORA
Member

Откуда:
Сообщений: 22
Доброе утро! Есть задачка, помогите плз
Перечислить карты с типами операций, которых по ним не было.
Таблица Card - таблица карт
Таблица Trans - таблица операций (связана с Card по idcard = idcardsource)
Таблица TransType - таблица типов операций (связана с Trans по idtranstype)
card.card - номер карты
transtype.transtypename - имя типа операции

Пример результата:
_______________________________________________
|card | transtypename |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6761770000000491 Пополнение
6761770000000491 Перевод
4132054633361776 Списание
18 май 12, 08:26    [12574150]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
Glory
Member

Откуда:
Сообщений: 104751
ProbationerORA
Перечислить карты с типами операций, которых по ним не было.

Вы хотите вообще все свои задачи здесь решить ?
Может стоит уже почитать что-нибудь самому ?
18 май 12, 08:28    [12574155]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
ProbationerORA
Member

Откуда:
Сообщений: 22
За сегодня это первая
18 май 12, 08:33    [12574170]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
ProbationerORA
Member

Откуда:
Сообщений: 22
Подскажите мыслю куда двигаться просто, а то рою в сторону, устал уже
18 май 12, 08:34    [12574175]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
Glory
Member

Откуда:
Сообщений: 104751
ProbationerORA
Подскажите мыслю куда двигаться просто, а то рою в сторону, устал уже

В сторону изучения синтаксиса SELECT, JOIN, EXISTS
18 май 12, 08:39    [12574197]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
ProbationerORA
Member

Откуда:
Сообщений: 22
Понятно что Cross Join даст все варианты типов операций для карточек, примерно так:

Select *
from TransType Cross Join dbo.Card

Теперь я так понимаю надо отсеить те которые действительно есть в операциях(Таблица Trans)
18 май 12, 08:47    [12574225]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
Glory
Member

Откуда:
Сообщений: 104751
ProbationerORA
Понятно что Cross Join даст все варианты типов операций

Изучите также другие join-ы
18 май 12, 08:50    [12574235]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
ProbationerORA
Понятно что Cross Join даст все варианты типов операций для карточек, примерно так:

Select *
from TransType Cross Join dbo.Card

Теперь я так понимаю надо отсеить те которые действительно есть в операциях(Таблица Trans)


можно использовать except
18 май 12, 08:54    [12574249]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
Glory
Member

Откуда:
Сообщений: 104751
http://firststeps.ru/sql/sql1.html
18 май 12, 08:55    [12574254]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
is_me
Member

Откуда: Нижний Новгород
Сообщений: 165
select c.номер_карты
      ,tt.тип_операции
from Card c inner join TransType tt on c.idtranstype=tt.айди_связи
where c.idcardsource not in (select distinct айди_связи from Trans)
18 май 12, 09:03    [12574278]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
Добрый Э - Эх
Guest
is_me
select c.номер_карты
      ,tt.тип_операции
from Card c inner join TransType tt on c.idtranstype=tt.айди_связи
where c.idcardsource not in (select distinct айди_связи from Trans)

Не доверяешь серверу?
18 май 12, 09:15    [12574324]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
is_me
Member

Откуда: Нижний Новгород
Сообщений: 165
Добрый Э - Эх
is_me
select c.номер_карты
      ,tt.тип_операции
from Card c inner join TransType tt on c.idtranstype=tt.айди_связи
where c.idcardsource not in (select distinct айди_связи from Trans)

Не доверяешь серверу?

А кто указал в вопросе, что там четко identity?
18 май 12, 09:20    [12574340]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
is_me
Добрый Э - Эх
пропущено...

Не доверяешь серверу?

А кто указал в вопросе, что там четко identity?

А какая нафиг для кляузы IN () разница?
18 май 12, 10:19    [12574802]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
is_me
Member

Откуда: Нижний Новгород
Сообщений: 165
sphinx_mv
is_me
пропущено...

А кто указал в вопросе, что там четко identity?

А какая нафиг для кляузы IN () разница?

Да никакой, просто если повторов много, то быстрее
18 май 12, 10:20    [12574813]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
ProbationerORA
Member

Откуда:
Сообщений: 22
select c.Card
,tt.TransTypeName
from dbo.Card c inner join TransType tt on c.IDCard = tt.IDTransType
where c.IDCard not in (select distinct IDCardSource from Trans)

Не хватает в предложении Where отбор по параметру TransTypeName
18 май 12, 10:32    [12574904]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
ProbationerORA
Member

Откуда:
Сообщений: 22
Спасибо всем кто принял участие в обсуждении задачи.
Кому интересно я решил так:

WITH Test AS
(
SELECT c.IDCard, tt.IDTransType
FROM dbo.Card c Cross Join TransType tt
EXCEPT
SELECT IDCardSource, IDTransType
FROM Trans
)
SELECT [Card], TransTypeName
FROM Test inner join dbo.Card ON Test.IDCard = Card.IDCard
inner join TransType ON Test.IDTransType = TransType.IDTransType

Еще раз спасибо.
18 май 12, 13:09    [12576482]     Ответить | Цитировать Сообщить модератору
 Re: Перечислить карты с типами операций, которых по ним не было  [new]
ххххх2
Guest
ProbationerORA, подозрительно знакомые задачи :)) Интересно - а как вы в школе задания решали - хоть раз удалось без списывания обойтись :)?
18 май 12, 15:02    [12577576]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить