Главная страница
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.016 c
6-1189674294
istok
2007-09-13 13:04
2008.06.29
Обзор сетевого окружения...


2-1212170295
Gjo
2008-05-30 21:58
2008.06.29
Закрытие консольных приложений


2-1212019695
Johnnnn
2008-05-29 04:08
2008.06.29
Как отключить загрузку изображений в TWebBrowser?


11-1190587748
Jon
2007-09-24 02:49
2008.06.29
Database large object


15-1211081879
Mem
2008-05-18 07:37
2008.06.29
Как освободить память?