Форум: "Начинающим";
Текущий архив: 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