Вроде ерунда...а черт ни как не пойму
Люди добрые помогите, кто чем может.
Есть табличка реест служащих, скажем признак увольнения 1, человек после увольнения может быть снова принят(переведен) на работу признак 0, (не берем периоды работы) т.е. у одеого чел. может быть и 0 и 1, но может быть и только 1 окнчательно уволили. как выбрать только тех у кого есть только 1, т.е. уволен совсем и не принимался снова.
Select .... WHERE (Tabl1.Уволен=1) and ...
Как выбрать только Иванова.?.?.?
Запрос На выборку
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Вариантов несколько.
1. Сделать признак с другими вариантами: 0 - работает, 1 - уволен с первого места работы, 2 - работает на втором месте работы, 3 - уволен со второго места и т.д.
2. Сделать два отдельных поля: "работает или нет" и "сколько работ сменил"
1. Сделать признак с другими вариантами: 0 - работает, 1 - уволен с первого места работы, 2 - работает на втором месте работы, 3 - уволен со второго места и т.д.
2. Сделать два отдельных поля: "работает или нет" и "сколько работ сменил"
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Если такие запросы постоянно используются, то, конечно, лучше структуру таблицы переделать так, чтобы на одно ФИО одна запись была. Хыиуду несколько вариантов предложил.
А к существующей таблице можно обратиться как-то так:
select ФИО from tabl1 group by ФИО having count(уволен)=1 and min(уволен)=1;
А к существующей таблице можно обратиться как-то так:
select ФИО from tabl1 group by ФИО having count(уволен)=1 and min(уволен)=1;
- Игорь Акопян
- Сообщения: 1419
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
я бы сделал "Уволен" не 0/1 а дату увольнения. Тогда можно отсортировать по этой дате. Или дату действия добавить, а признак оставить 0/1, но без даты не удобно... К примеру я вот не сразу понял, что у вас добавление строк идёт сверху
select фио from x where уволен='1'
minus
select фио from x where уволен='0'
minus
select фио from x where уволен='0'
chur прав:
select ... from table t1
where 1=(select count(уволен) from table t2
where t1.FIO = t2.FIO
group by уволен
having count(уволен)=1)
select ... from table t1
where 1=(select count(уволен) from table t2
where t1.FIO = t2.FIO
group by уволен
having count(уволен)=1)
Оптимизация по скорости:
#define while if
Оптимизация по размеру:
#define struct union
#define while if
Оптимизация по размеру:
#define struct union