Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос
 
 автор: debilder   (22.04.2011 в 12:10)   личное сообщение
 
 

Подскажите пожайлуста, как мне в поле счётчик опрелить номера запичей которые были удалены? (1,2,3,5) например: 4.

  Ответить  
 
 автор: kot_k_k   (22.04.2011 в 12:22)   личное сообщение
 
 

а не проще програмно

вернее только програмно, т.к. ему нужно выводить записи существующие а он взять их нигде не может

разве что создавать таблу копия той что сравниваем загонять туда кол-во записей = максимальному значению счетчика испытуемой, и тогда получится left join where is null

  Ответить  
 
 автор: Силblч   (22.04.2011 в 12:23)   личное сообщение
 
 

может как то так?

SELECT d.id, d_1.id,nz(d_1.id-d.id,d.id+1) as diff
FROM d LEFT JOIN d AS d_1 ON d.id = d_1.id-1;


d.id____d_1.id____diff
1____2____1
2____3____1
3________4
5____6____1
6________7

  Ответить  
 
 автор: kot_k_k   (22.04.2011 в 12:26)   личное сообщение
 
 

а если провал больше 1

  Ответить  
 
 автор: Силblч   (22.04.2011 в 12:30)   личное сообщение
 
 

я же написал - как то так ;))

з.ы. какое задание - такой и ответ , ыыыы

  Ответить  
 
 автор: kot_k_k   (22.04.2011 в 12:40)   личное сообщение
 
 

а можно подойти по другом - если нет каскадного удаления и в связаной по этому полю табле висят записи которые могут ссылаться на удаленное значение - вот их можно выловить left join

  Ответить  
 
 автор: snipe   (22.04.2011 в 13:09)   личное сообщение
 
 

Узнать максимальное число счетчика
создать временную таблу с одним полем (числовым)
програмно забить это поле последовательными целыми числами
создать запрос на объединение (Union All) к имеющейся табле и временной табле
создать запрос к запросу на поиск неповторяющихся записей

все

временную таблу после грохнуть (или очистить) за не надобностью

  Ответить  
 
 автор: Силblч   (22.04.2011 в 17:50)   личное сообщение
 
 

ну примерно так :) подробно,чтобы понятна была как хороводы водить ы
1. создаем запрос, где пересекаем декартово одну и туже таблицу с ID

SELECT d1.id AS id1, d2.id AS id2
FROM d AS d1, d AS d2;

называем её "decart" ыыыы

2. создаем запрос на основе п.1 и называем его "decartun" уникальный патамушта! по ходу записей вроде будет больше чем, нам надо в выборку , но мы не боимся трудностей и в принципе можем ограничить это дело, но не будем!

SELECT [id1]+[id2] AS Выражение1
FROM decart
GROUP BY [id1]+[id2];


3. теперь такой запрос, который назовем "decartnn" и в котором пронумеруем по порядку все запси - они то у нас получились из предыдущего запроса уникальными, йо.

SELECT DCount("Выражение1","decartun","Выражение1<=" & CStr(decartun.Выражение1))*1 AS nn, decartun.Выражение1
FROM decartun;


4. финализируем пятничные изыскания

SELECT decartnn.nn, d.id
FROM decartnn LEFT JOIN d ON decartnn.nn = d.id;


результат, как грицца, на лице


nn__id
1___1
2___2
3___3
4___
5___5
6___
7___
8___8
9___9
10__
11__
12__
13__13
14__14
15__
16__
17__
18__
19__
20__
21__
22__
23__
24__



хороших выходных :)

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList