Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Странный запрос, или как извратиться / 25 сообщений из 52, страница 1 из 3
21.12.2004, 07:59:47
    #32836093
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
MDB
Нужна идея
Есть данные
Таблица 1
КодДатаАктВыполнение101.01.04110102.01.04220201.01.04330
Таблица 2
КодДата п\пОплата105.01.045115205.01.045230
Можно ли с помощью запроса получить такую гуппировку
КодДатаАктВыполнение Дата п\пОплата101.01.04110 05.01.045115102.01.04220 201.01.04330 05.01.045230
Крутила и так и этак
Вижу выход заполнить через рекордсет, но боюсь, медленно работать будет
...
Рейтинг: 0 / 0
21.12.2004, 08:10:30
    #32836106
Рачаев Олег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Доброе утро, Ирча.

Код: plaintext
1.
2.
SELECT Таблица1.Код, Таблица1.Дата, Таблица1.Акт, Таблица1.Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица1 LEFT JOIN Таблица2 ON Таблица1.Код=Таблица2.Код

И никаких рекордсетов ;)
...
Рейтинг: 0 / 0
21.12.2004, 08:12:13
    #32836109
Рачаев Олег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
- не надо, это просто выделить хотел, но не работает :)
...
Рейтинг: 0 / 0
21.12.2004, 08:23:10
    #32836113
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Доброе утро
Данные не совсем корректно привела
Таблица 1
Код Дата Акт Выполнение 1 01.01.04 110 1 02.01.04 2 20 2 01.01.04 3 30
Таблица 2
Код Дата п\п Оплата 1 05.01.04 51 15 2 05.01.04 52 30 2 06.01.04 53 30
Надо
Код Дата Акт Выполнение Дата п\п Оплата 1 01.01.04 1 10 05.01.04 51 15 1 02.01.04 2 20 2 01.01.04 3 30 05.01.04 52 30 2 06.01.04 53 30
Поэтому LEFT JOIN не поможет
...
Рейтинг: 0 / 0
21.12.2004, 08:52:36
    #32836127
Рачаев Олег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
А если попробовать так: Оформляем 2 запроса, один с LEFT JOIN, другой - RIGHT JOIN, а потом делаем объеденение этих запросов ( UNION) ? Как такой вариант?
...
Рейтинг: 0 / 0
21.12.2004, 08:53:07
    #32836128
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Рачаев Олег - не надо, это просто выделить хотел, но не работает :)
LEFT JOIN и в первом варианте не совсем помогает, ибо во второй строке нулы не получатся :(

если в первой и второй таблице добавить счетчик внутри группы (Код),
например так: http://www.sql.ru/faq/faq_topic.aspx?fid=214 (Q7)

то мог бы помочь FULL JOIN, но его в Аксе нет, но можно на форуме пошукать как его сымитировать :)

Удачи
...
Рейтинг: 0 / 0
21.12.2004, 09:01:15
    #32836132
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Разбивайте сложную задачу на этапы.

1. Получить в запросе список уникальных КОД из первой и второй таблиц.
2. Объединить их юнионом.
3. Еще раз отфильтровать уникальные дистинктом.
4. Полученный результат джоинить с первой и второй таблицами.
...
Рейтинг: 0 / 0
21.12.2004, 09:24:49
    #32836159
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Спасибо за советы.
Попробую воспользоваться счетчиком
А как на чсет рекордсета, кто делал
записей много
стоит связываться или нет?
...
Рейтинг: 0 / 0
21.12.2004, 09:38:28
    #32836181
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
a full join в Аксе нет?
...
Рейтинг: 0 / 0
21.12.2004, 10:28:08
    #32836271
Рачаев Олег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
2 paparome, действительно Null-ей не получаеться, виноват - проглядел ...

А насчет фул джойна: Можно попробовать похимичить через условие WHERE, правда сложно получиться ...
...
Рейтинг: 0 / 0
21.12.2004, 10:29:58
    #32836274
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Или я сошла с ума, или бури сегодня магнитные,
ничего....
Пони бегает по кругу
Попробовала все предложения результат ЗИРРОУ
...
Рейтинг: 0 / 0
21.12.2004, 10:46:07
    #32836301
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
и в уме круги считает

1 mdb выложи в архиве с маленькими табличками - будем думать
2 реальное количество записей - ?
...
Рейтинг: 0 / 0
21.12.2004, 11:03:48
    #32836355
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
может тогда так?

select * from table1 as a cross join table2 as b
where (a.код=b.код or b.код in null) and (a.код=b.код or a.код in null)
...
Рейтинг: 0 / 0
21.12.2004, 11:09:47
    #32836379
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Shurgenzможет тогда так?

select * from table1 as a cross join table2 as b
where (a.код=b.код or b.код in null) and (a.код=b.код or a.код in null)
и в mdb cross join работает - а какая версия Access ?
...
Рейтинг: 0 / 0
21.12.2004, 11:12:17
    #32836385
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
вместо кросс джойна можно и просто запятую поставить
...
Рейтинг: 0 / 0
21.12.2004, 11:15:51
    #32836400
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Shurgenzвместо кросс джойна можно и просто запятую поставить
1 возможно
2 предлагать непроверенное - даме ,не очень галантно !
...
Рейтинг: 0 / 0
21.12.2004, 11:18:05
    #32836405
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Шугард:

Согласен, однако, я же просто мысль предложил... дама, или не дама, учимся мы все, и дамы, и не дамы
...
Рейтинг: 0 / 0
21.12.2004, 11:19:30
    #32836414
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
>Как сымитировать Full Join
Union без All, а потом к нему присобачивать. Изврат, а что делать;-(
...
Рейтинг: 0 / 0
21.12.2004, 11:20:05
    #32836417
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
К тому же... разве есть разница между запятой и кросс джойном? я, чесс говоря, не встречал разницы меж тем и другим
...
Рейтинг: 0 / 0
21.12.2004, 12:07:34
    #32836582
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Access 2003
cross и запятую пока не пробовала
Прикладываю файл с двумя табличками
Количество записей будет не более нескольких сотен за раз
на даты будет условие (отбор за период)
Помогите кто чем может (тут смайлик с большой лужей слез)
...
Рейтинг: 0 / 0
21.12.2004, 12:44:02
    #32836681
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
2 paparome
full join тут тоже не поможет - он перемножит количество записей с одинаковым кодом. А вот пронумеровать записи хорошо. Можно даже не в этом же запросе, а во временную таблицу. Ох, как интересно, да тут и индексов никаких нет.
А без индекса их и пронумеровать толком не получиться.
Хотя можно попробовать. Но скорость опять же позволит желать лучшего.

В стандартном модуле:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim Kod
Dim CurrId as long

public function GetNextId(KeyField) as long
  if KeyField=Kod then
    CurrId=CurrId+ 1 
  else
    CurrId= 1 
    Kod=KeyField
  endif
  GetNextId=CurrId
end function

Запросы:
1)
Код: plaintext
select GetNextId(Код) as Id, * into temp1 from Таблица1 order by Код
2)Сбросить Kod, хоть так: select GetNextId(Null)
3)
Код: plaintext
select GetNextId(Код) as Id, * into temp2 from Таблица2 order by Код
4)
Код: plaintext
1.
2.
insert into temp1 (Id)
select temp2.Id from temp2 left join temp1 on ((temp2.Код=temp1.Код) and (temp2.Id=temp1.Id))
where temp1.Id is null
и
5)
Код: plaintext
1.
select temp1.*, temp2.* 
from temp1 left join temp2 on ((temp2.Код=temp1.Код) and (temp2.Id=temp1.Id))
После (или перед) работы не забываем удалять temp1/2.
...
Рейтинг: 0 / 0
21.12.2004, 12:59:08
    #32836731
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SELECT Table1.Код, 
    IIf([Table2].[Дата]=
            (Select Min(t2.Дата) 
            From Table2 t2 
            Where t2.Код=Table1.Код),
        [Table1].[Дата],Null) AS Дата1, 
    IIf([Table2].[Дата]=
            (Select Min(t2.Дата) 
            From Table2 t2 
            Where t2.Код=Table1.Код),
        [Table1].[Акт],Null) AS Акт, 
    IIf([Table2].[Дата]=
            (Select Min(t2.Дата) 
            From Table2 t2 
            Where t2.Код=Table2.Код),
        [Table1].[Выполнение],Null) AS Выполнение, 
    IIf([Table1].[Дата]=
            (Select Min(t1.Дата) 
            From Table1 t1 
            Where t1.Код=Table2.Код),
        [Table2].[Дата],Null) AS Дата2, 
    IIf([Table1].[Дата]=
            (Select Min(t1.Дата) 
            From Table1 t1 
            Where t1.Код=Table2.Код),
        [Table2].[пп],Null) AS пп, 
    IIf([Table1].[Дата]=
            (Select Min(t1.Дата) 
            From Table1 t1 
            Where t1.Код=Table2.Код),
        [Table2].[Оплата],Null) AS Оплата
FROM Table1 INNER JOIN Table2 ON Table1.Код = Table2.Код
ORDER BY Table1.Код, Table1.Дата, Table2.Код, Table2.Дата;

можно как-нить заоптимизировать
...
Рейтинг: 0 / 0
21.12.2004, 13:00:28
    #32836737
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Ну на запрос(Запрос2) раз самой лениво
...
Рейтинг: 0 / 0
21.12.2004, 13:14:30
    #32836782
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
2Shark
По датам объединять не надо, судя по примеру.

2ЛП
Что это было? :))
...
Рейтинг: 0 / 0
21.12.2004, 13:18:44
    #32836793
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странный запрос, или как извратиться
Упс, точно.
Скажи тогда словами, че надо то. Как оплата должна догадаться по какому она акту если их Н? Фифом?
Они сами не знают чего хочут:^)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Странный запрос, или как извратиться / 25 сообщений из 52, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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