Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2014, 15:20   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Выборка элементов

Здравствуйте уважаемые специалисты SQL'цы, я в sql не силен поэтому нуждаюсь в помощи по составлению выборки.

У меня есть таблица
Код:
| Клиент | Тип Клиента |
   "Вася"            1
   "Вася"            2
   "Вася"            7
   "Вася"            21
Далее мне нужно добавить нового клиента только в том случае если поступающие его данные а точнее "Тип клиента" не равен тем данным что уже указанны в таблицы.
coNsept вне форума Ответить с цитированием
Старый 29.09.2014, 15:29   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Какая СУБД?
Вообще в большинстве современных СУБД можно делать те или иные поля уникальными. Если сделать поле "Тип Клиента" уникальным, то при добавлении ничего лишнего делать не придётся. Всю работу по проверке уникальности поля и принятию решения о возможности добавления записи ядро СУБД сделает за Вас.
Streletz вне форума Ответить с цитированием
Старый 29.09.2014, 15:31   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну проверил что нет и вставляй. Проблема то в чем? Да, и SQL-ы как бы разные бывают
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.09.2014, 15:35   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Я использую MSSQL.
Дело в том что допустим какой-то Саша а не Ваня тоже может иметь поле "Тип Клиента" = 1, поэтому в этом случае уникальность не подходит.

Код:
Ну проверил что нет и вставляй. Проблема то в чем? Да, и SQL-ы как бы разные бывают
Я бы не задавал вопрос на форуме если бы знал как проверить какое-то число с теме что в таблицы.
+ Я еще не привык к документации по SQL, она очень не понятно описана, по крайней мере на MSDN.
coNsept вне форума Ответить с цитированием
Старый 29.09.2014, 15:40   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
допустим какой-то Саша а не Ваня тоже может иметь поле "Тип Клиента" = 1, поэтому в этом случае уникальность не подходит.
А ты сделай уникальный индекс по обеим полям
Фамилия+Тип
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2014, 15:50   #6
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Спасибо за конкретный ответ Stilet, это то что нужно.

Ну а все таки мне интересно, как можно взяв один номер пройти по таблице и проверить его на уникальность?

Последний раз редактировалось Stilet; 29.09.2014 в 16:03.
coNsept вне форума Ответить с цитированием
Старый 29.09.2014, 16:02   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наздоровье )
Цитата:
как можно взяв один номер пройти по таблице и проверить его на уникальность?
В триггере прописать проверку типа (select count(поле)...) и если таких 0 то вставлять иначе нет.
Триггеры для того и сделаны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2014, 11:36   #8
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Вариант с not exists:
Код:
insert into my_table
  (client, client_type)
select
  :cl, :clt
from
  dual -- что вместо него в MS SQL?
where
  not exists (
    select null from my_table where client = :cl and client_type = :clt
  )
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XQuery выборка элементов из XML по значению атрибута No_Comments Помощь студентам 0 01.04.2014 17:27
выборка одинаковых элементов Kukurudza Общие вопросы C/C++ 2 27.03.2012 10:18
Выборка выборка с таблицы с отношением многие-ко-многим 8alig8 БД в Delphi 2 24.06.2010 12:21
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов Strax Фриланс 11 12.06.2010 20:13
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16