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

Откуда:
Сообщений: 151
Здравствуйте!
С наступюшим всех!


Что-то никак не соображу...торможу наверное
Есть две таблицы.

1.DOCTORS
----------------------
doc_id | doc_name |
----------------------
1 xxx
2 yyy
3 NULL
4 zzz

2.CARDS
---------------------------
card_id | doc_id | busy |
---------------------------
1 1 0
2 1 NULL
3 3 0
4 3 1
5 3 NULL
6 2 1
7 2 1


Как выбрат doc_id, и в соседней колонке 0, если для этого doc_id есть хотя бы одна единичка в поле busy
и 1 если в поле busy для этого doc_id одни нули(0) или NULL

result
-------------------------
doc_id | sos.kolonka |
-------------------------
1 0
2 1
3 1
4 0



Помогите, кто может
Всем спасибо.
31 дек 11, 01:12    [11852428]     Ответить | Цитировать Сообщить модератору
 Re: Есть две таблицы.  [new]
Fir$t
Member

Откуда:
Сообщений: 151
Так удобнее для глаза :)

Есть две таблицы.

1.DOCTORS
----------------------
doc_id | doc_name |
----------------------
1.............xxx
2.............yyy
3 ............NULL
4.............zzz

2.CARDS
---------------------------
card_id | doc_id | busy |
---------------------------
1............. 1.............0
2 ............ 1.............NULL
3............. 3.............0
4 ............ 3.............1
5 .............3.............NULL
6 .............2.............1
7 .............2.............1


Как выбрат doc_id, и в соседней колонке 0, если для етого doc_id есть хотя бы одна единичка в поле busy
и 1 если в поле busy для етого doc_id одни нули(0) или NULL

result
-------------------------
doc_id | sos.kolonka |
-------------------------
1..................0
2..................1
3..................1
4..................0



Помогите, кто может
Всем спасибо.
31 дек 11, 01:16    [11852435]     Ответить | Цитировать Сообщить модератору
 Re: Есть две таблицы.  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
Fir$t
Как выбрат doc_id, и в соседней колонке 0, если для етого doc_id есть хотя бы одна единичка в поле busy
и 1 если в поле busy для етого doc_id одни нули(0) или NULL

result
-------------------------
doc_id | sos.kolonka |
-------------------------
1..................0
2..................1
3..................1
4..................0
.

судя по приведенному результату, все ровно наоборот
31 дек 11, 02:10    [11852527]     Ответить | Цитировать Сообщить модератору
 Re: Есть две таблицы.  [new]
Lasa
Member

Откуда: Canada
Сообщений: 81
Это для любой версии сервера, и если как правильно заметил Baddy , "все ровно наоборот"

SELECT     dbo.Doctors.doc_id
        , CASE WHEN SUM(dbo.Cards.busy)> 0 THEN 1 ELSE 0 END 
FROM         dbo.Doctors LEFT OUTER JOIN
                      dbo.Cards ON dbo.Doctors.doc_id = dbo.Cards.doc_id
GROUP BY dbo.Doctors.doc_id
31 дек 11, 03:28    [11852605]     Ответить | Цитировать Сообщить модератору
 Re: Есть две таблицы.  [new]
Fir$t
Member

Откуда:
Сообщений: 151
SELECT     
         dbo.Doctors.doc_id
        , (select CASE WHEN SUM(dbo.Cards.busy)> 0 THEN 1 ELSE 0 END from cards 
where cards.doc_id =  dbo.Doctors.doc_id -- da, nepravilno :) no etot dbo.Doctors.doc_id nado bi vzyat 
--iz pervoy kolonki dlya kajdoy stroki sootvetstvenno ..  mojet ego kak-to vrode parametra peredavat tuda.. 
--a mojet ya vsyo i uslojnyayu na nervnoy pochve :)
) as [sos_kolonka]
FROM         dbo.Doctors LEFT OUTER JOIN
                      dbo.Cards ON dbo.Doctors.doc_id = dbo.Cards.doc_id
GROUP BY dbo.Doctors.doc_id
31 дек 11, 04:04    [11852631]     Ответить | Цитировать Сообщить модератору
 Re: Есть две таблицы.  [new]
Fir$t
Member

Откуда:
Сообщений: 151
Baddy, Спасибо за ответ!

Может я не так выразился

1. Берём doc_id из таблицы doctors (допустим id=3)
2. Смотрим все записи (busy) для етого doc_id в таблице cards (это 0, 1 и NULL)
3. Если в этих записях, только для данного doc_id нет ни одной записи busy = 1 (т.е. все они или 0 или NULL), - в наshем примере единица присутствует
делаем строку:

doc_id | соседняя_колонка
-------------------------------
3.................0
31 дек 11, 04:18    [11852635]     Ответить | Цитировать Сообщить модератору
 Re: Есть две таблицы.  [new]
aleks2
Guest
SELECT doc_id, max(ISNULL(busy,0)) as [соседняя_колонка]
FROM dbo.Cards 
GROUP BY doc_id
31 дек 11, 10:23    [11852706]     Ответить | Цитировать Сообщить модератору
 Re: Есть две таблицы.  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
ну, тогда уж
aleks2
SELECT doc_id, ABS(max(ISNULL(busy,0))-1) as [соседняя_колонка]
FROM dbo.Cards 
GROUP BY doc_id
31 дек 11, 18:12    [11853347]     Ответить | Цитировать Сообщить модератору
 Re: Есть две таблицы.  [new]
Lasa
Member

Откуда: Canada
Сообщений: 81
Baddy
SELECT doc_id, ABS(max(ISNULL(busy,0))-1) as [соседняя_колонка]
FROM dbo.Cards 
GROUP BY doc_id

или
aleks2
SELECT doc_id, max(ISNULL(busy,0)) as [соседняя_колонка]
FROM dbo.Cards 
GROUP BY doc_id

в этом случае doc_id = 4 никак не попадет в результат. Впрочем автору топика виднее. В теме уже есть два разных варианта, того что должно получиться, может есть и третий :)
4 янв 12, 00:09    [11857070]     Ответить | Цитировать Сообщить модератору
 Re: Есть две таблицы.  [new]
Fir$t
Member

Откуда:
Сообщений: 151
Премного благодарен !!!
4 янв 12, 09:45    [11857313]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить