Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.29;
Скачать: CL | DM;

Вниз

Запрос на составную выбору без повторений   Найти похожие ветки 

 
Nicolas ©   (2008-06-03 15:36) [0]

Мастера, помогите решить такую проблему:
Есть 2 таблицы Tab1(ID,N_Z)  и Tab2(N_Z, Os)
Дано ID=4. Надо выбрать из Tab1 все поля, c данным ID, включающие только те N_Z таблицы Tab2, где Os=0. Повторяющеся значения N_Z  не должны выбираться (т.е
Tab1:
    ID      N_Z
     1        1
     1        2
     2        3

Tab2:
   N_Z     Os
   1        100
   1           0  
   2         22
   2           0
   3         40

Результат:
   ID      N_Z
   1         1
   1         2
).
Ответьте плиз. конкретным запросом.


 
Anatoly Podgoretsky ©   (2008-06-03 15:44) [1]

> Nicolas  (03.06.2008 15:36:00)  [0]

Повторения это distinct, проверка на 0 это WHERE OS = 0


 
Sergey13 ©   (2008-06-03 15:45) [2]

select distinct *
from tab1,tab2
where tab1.n_z=tab2.nz and tab2.os=0


 
Правильный_Вася   (2008-06-03 16:00) [3]


> select distinct *

хитрец ;)


 
Anatoly Podgoretsky ©   (2008-06-03 16:20) [4]

> Правильный_Вася  (03.06.2008 16:00:03)  [3]

Что не нравится distinct или *


 
Smile   (2008-06-03 16:30) [5]

А я не понял, что означает:
Дано ID=4.
И соответсвенно ...:)


 
Anatoly Podgoretsky ©   (2008-06-03 16:36) [6]

Ну дано, ну подумаешь, что Sergey13 © не указал это в условия, но может автор хоть часть работы сделает сам?


 
Smile   (2008-06-03 16:40) [7]

Я к тому, что пример автора этому не соответствует:)


 
Правильный_Вася   (2008-06-03 16:56) [8]


> Что не нравится distinct или *

нравится-нравится
там автору еще подумать надо ;)


 
Nicolas ©   (2008-06-03 17:26) [9]

Небольшая поправка, ID=1. (а то ответ в моем примере выглядит некорректно).


 
Nicolas ©   (2008-06-03 18:11) [10]

За distinct спасибо. Давайте теперь оставим только tab2.
Нужно произвести выборку слкдующим образом: Если какому либо N_Z соответствует значение из OS=0, то этот N_Z не включается в конечный результат.
Т.е должно получиться:
N_Z      Os
 3         40

select distinct N_Z, OS frm tab2 where os<>0      - конечно не получается, т.к. он выбирает 1-е и 2-е N_Z тоже.


 
Правильный_Вася   (2008-06-03 21:33) [11]

not exists


 
Sergey13 ©   (2008-06-04 08:44) [12]

> [10] Nicolas ©   (03.06.08 18:11)
> За distinct спасибо. Давайте теперь оставим только tab2.

Самое время взять в руки учебник по SQL.


 
Anatoly Podgoretsky ©   (2008-06-04 08:50) [13]

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


 
Nicolas ©   (2008-06-04 10:18) [14]


> Anatoly Podgoretsky ©   (04.06.08 08:50) [13]
> Вряд ли поможет, поскольку даже простые примеры приведеные
> выше не читает, вместо этого пришет свою, не работающую
> ерунду.Я ему желаю поработать с большими таблицами, а не
> с тестовыми для курсовой. Сомневаюсь, что он даже понял,
>  что такое он написал.

То, что выше получилось, а с остальным я сам разобрался:
SELECT N_Z, Os
FROM Tab2
WHERE N_Z NOT IN(SELECT N_Z FROM Tab2 WHERE Os=0)

Всем спасибо.
Тему закрываем


 
Sergey13 ©   (2008-06-04 10:28) [15]

> [14] Nicolas ©   (04.06.08 10:18)
> SELECT N_Z, Os
> FROM Tab2
> WHERE N_Z NOT IN(SELECT N_Z FROM Tab2 WHERE Os=0)

А смысл в подзапросе какой?
SELECT N_Z, Os
FROM Tab2
WHERE Os<>0



Страницы: 1 вся ветка

Текущий архив: 2008.06.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
2-1212337033
Ceil
2008-06-01 20:17
2008.06.29
Подскажите


2-1212329213
BasUrban
2008-06-01 18:06
2008.06.29
Поверх всего


2-1212148738
abhtr
2008-05-30 15:58
2008.06.29
Перекрасить строку в TMemo


2-1212250427
Proxytel
2008-05-31 20:13
2008.06.29
Клавиатурный логер. Блокируется курсор...


11-1190533216
MTsv DN
2007-09-23 11:40
2008.06.29
KOL v.2.80 (UNICODE)