Главная страница
    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.044 c
15-1209458145
inew
2008-04-29 12:35
2008.06.29
Tabel1.filter


2-1212319062
Kiril
2008-06-01 15:17
2008.06.29
Сколько пользователей "потянет" Delphi (ADO) + Access?


2-1212493835
Igor
2008-06-03 15:50
2008.06.29
Treeview


15-1210778077
Fredy314
2008-05-14 19:14
2008.06.29
Вечно целая винда.


2-1212586709
Михаил
2008-06-04 17:38
2008.06.29
Помогите с формой





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский