Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.051 c
2-1212320965
ajunta
2008-06-01 15:49
2008.06.29
Окончание загрузки TWebBrowser


2-1212497805
MegaVolt
2008-06-03 16:56
2008.06.29
Как сделать прокрутку ListView колесиком?


15-1209724339
may be I am noob...
2008-05-02 14:32
2008.06.29
Свой сервер для входящей почты


2-1212463198
n00b xDD
2008-06-03 07:19
2008.06.29
DEC to HEX(а точнее как инт показать в виде 16ого числа)


15-1211181236
Ega23
2008-05-19 11:13
2008.06.29
Строки из resource-файла или что-то другое?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский