powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите начинающему как правельней сделать
4 сообщений из 4, страница 1 из 1
Подскажите начинающему как правельней сделать
    #32051328
doctor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В базе есть таблица tbl_1 (id - identity)в которой отслеживается перемещение оборудования и сохраняется история. С оборудованием производятся действия out(забрал) и in(поставил)

Сам вопрос как правильней, граммотней, оптимальней ..... организовать
1. в таблицу tbl_1 добавить доп.поле (field - bit) и
Код: plaintext
1.
2.
3.
4.
5.
out: update tbl_1 set field=  0  where field= 1  and ....
       insert into tbl_1(...field...) values(...'0'...) - забрал
in:   insert into tbl_1(...field...) values(...'1'...) - поставил
и по полю field определять текущее место положение .. каждого оборудования.
select * from tbl_1 where field='1' and ....


2.
Код: plaintext
1.
2.
3.
4.
5.
   insert into tbl_1(......) values(......) - забрал
   insert into tbl_1(......) values(......) - поставил
именно в таком порядке
и по мах( tbl_1.id ) определять .....
select * from tbl_1 where id in (select max(id) from tbl_1 group by ...)

3. Создавать таблицу #MaxId с max(id) from tbl_1 и
делать
Код: plaintext
1.
select * from tbl_1 inner join #maxId on tbl_1.id=#maxId.id

4.другое

, подскажите опираясь на ваш опыт. Прежде всего интересует производительность, поскольку реальные запросы большие и их еще могёт быть несколько на странице.
...
Рейтинг: 0 / 0
Подскажите начинающему как правельней сделать
    #32051354
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я к сожелению не совсем понял Вашего кода, но исходя из текста могу предположить, что Вам надо вставлять записи в tbl_1 примерно такого сожержания
Код: plaintext
insert into tbl_1 values(ИДоборудования, [out/in], getdate())

при каждом перемещении.
Так же я не понял, что нужно определять
...
Рейтинг: 0 / 0
Подскажите начинающему как правельней сделать
    #32051407
doctor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava
да я кода не приводил,
при каждом перемещении
Код: plaintext
1.
2.
insert into tbl_1 values(id,idType,idHost,[out],getdate(),user_id)
insert into tbl_1 values(id,idType,idHost,[in],getdate(),user_id)

с этим все впорядке
определить к примеру надо где находится каждое оборудование, какое, кто его поставил, и когда
Код: plaintext
1.
2.
3.
4.
5.
select t.name, h.name, u.name, tb.date from
tb_1 tb inner join types t on tb.idType=t.id
inner join host h on tb.idHost=h.id
inner join sysusers u on tb.idUser=u.uid
where tb.id in (max(id) from tbl_1 group by (idType))

Я спросил что лучше использовать
как написал сверху или ввести доп.поле field скажем типа bit
Забрал обурудование апдейтил field = 0 для текущей записи инсерт что забрал (поле field = 0), след инсерт что поставил на др. host (поле field = 1)
код не привожу здесь пороблем нет логика простая.
и соответсвенно в приведенном примере
Код: plaintext
1.
2.
3.
....
вместо where tb.id in (max(id) from tbl_1 group by (idType))
пишем where tb.field='1'

или вариант с использованием таблицы с мах(id) из tbl_1 по каждому idType
...
Рейтинг: 0 / 0
Подскажите начинающему как правельней сделать
    #32051414
dao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай по подробнее про задачу и что есть(таблицы) а так на всидку - таблица оборудование в ней храница последнее место оборудования можно тудаже записывать последнюю операцию - таблица история в ней отражаются все твои перемещения
Тогда наверное наиболее частый запрос - выборка текущего расположения не потребует допольнительных обьединений и всего прочего - а если нужна история то тогда делаешь обединение и вытаскиваешь то что нужно .Правда это отход от классики - но если нужна оптимизация то приходиться отказываться от третьей формы
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите начинающему как правельней сделать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]