powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сравненией записей из 2-х таблиц
47 сообщений из 47, показаны все 2 страниц
Сравненией записей из 2-х таблиц
    #32794566
Есть две таблицы "Таблица1" и "Таблица2".

"Таблица 1" содержит поля: "Код" и "Фактич. сумма".
"Таблица 2" содержит поля: "Код" и "Ориентировач. сумма".

Некоторые записи полей "Фактич. сумма" и "Ориентировач. сумма" содержат нулевые значения.

Подскажите, как грамотно разработать запрос, чтобы сравнивались поля "Фактич. сумма" и "Ориетировач. сумма", где поля "Код" совпадают. Если поле "Фактич. сумма" отличается от "Ориентировоч. суммы" в новом поле запроса писать "Фактич. сумма", иначе ничего.

Спасибо.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32794581
Iskander68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как не получается?

--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32794624
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT Iif(Nz([Фактич. сумма], 0) = Nz([Ориентировач. сумма], 0), "", ([Фактич. сумма]) AS "Фактич. сумма" FROM [Таблица 1] AS T1 INNER JOIN [Таблица 2] AS T2 ON [T1].[Код] = [T2].[Код]
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32794627
.....
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, что ли?

Код: plaintext
1.
2.
3.
SELECT Таблица1.ID_Val, Таблица1.FactSum, Таблица2.EstimSum, 
IIf(nz([FactSum], 0 )<>NZ([EstimSum], 0 ),[FactSum], 0 ) AS Result
FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.ID_Val = Таблица2.ID_Val
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32794728
Спасибо большое все работает.

Только что обозначает параметр "_Val"?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32795065
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь2Спасибо большое все работает.

Только что обозначает параметр "_Val"?

а что работает?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32795066
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha Пользователь2Спасибо большое все работает.

Только что обозначает параметр "_Val"?

а что работает?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32795319
Запрос работает.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32795605
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что тогда не получается?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32795843
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть все-таки нужен тот запрос, который работает?

мне-то по формулировке показалось, что нужен либо


Код: plaintext
1.
2.
SELECT Таблица1.Код, Таблица2.[Ориентировач сумма] AS [Фактич сумма]
FROM Таблица1 LEFT JOIN Таблица2 ON (Таблица2.[Ориентировач сумма]=Таблица1.[Фактич сумма]) AND (Таблица1.Код=Таблица2.Код);

либо

Код: plaintext
1.
2.
SELECT Таблица1.Код, Таблица2.[Ориентировач сумма] AS [Фактич сумма]
FROM Таблица1 RIGHT JOIN Таблица2 ON (Таблица2.[Ориентировач сумма]=Таблица1.[Фактич сумма]) AND (Таблица1.Код=Таблица2.Код);
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32795927
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Пользователь2
во втором "либо" очепятка.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796189
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсть две таблицы "Таблица1" и "Таблица2".
"Таблица1" содержит поля: "Код" и "Поле1"
"Таблица2" содержит поля: "Код" и "Поле2"
Некоторые записи полей "Поле1" и "Поле2" содержат нулевые значения.
Подскажите, как грамотно разработать запрос, чтобы получился такой вариант:
Нужно сравнить "Поле1" и "Поле2", где поля "Код" совпадают
Если "Поле1" "Таблицы1" равно "Поле2" "Таблицы2" - то в результат записывается "Поле1".
Если "Поле1" "Таблицы1" отличается от "Поля1" "Таблицы2" - в новом поле записать "Поле1".
Если "Поле2" содержит пустую строку, а "Поле1" содержит значение, то в результат записывается "Поле1"
Например:
Поле1 Поле2 Результат
ЗН1 ЗН2 ЗН3 ЗН1 ЗН2 ЗН3 ЗН1 ЗН2 ЗН3
x1 y2 z x1 y1 x1 y2 z
где ЗН - значение.
Спасибо.
Соответствующий топик удален. Спасибо за ссылку.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796204
Это более усложненный вариант запроса.

Буду очень признателен за помощь и совет.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796212
Сейчас нормально опубликую, а то что-то мелковато.

Есть две таблицы "Таблица1" и "Таблица2".

"Таблица1" содержит поля: "Код" и "Поле1"
"Таблица2" содержит поля: "Код" и "Поле2"

Некоторые записи полей "Поле1" и "Поле2" содержат нулевые значения.

Подскажите, как грамотно разработать запрос, чтобы получился такой вариант:

Нужно сравнить "Поле1" и "Поле2", где поля "Код" совпадают

Если "Поле1" "Таблицы1" равно "Поле2" "Таблицы2" - то в результат записывается "Поле1".
Если "Поле1" "Таблицы1" отличается от "Поля1" "Таблицы2" - в новом поле записать "Поле1".
Если "Поле2" содержит пустую строку, а "Поле1" содержит значение, то в результат записывается "Поле1"

Например:

Поле1: ЗН1 - х1, ЗН2 - у2, ЗН3 - z
Поле2: ЗН1 - х1, ЗН2 - у1, ЗН3 - "0"
Результат: ЗН1 - х1, ЗН2 - у2, ЗН3 - z

где ЗН - значение.

Спасибо.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796229
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А когда же пишем поле2?

При таких условиях достаточно:

select Таблица1.Поле1
from Таблица1 inner join Таблица2
on Таблица1.Код = Таблица1.Код

всегда выводится поле Поле1! :)
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796249
Я имел ввиду, что-то вроде этого:

IIf(nz([Таблица2]![Поле2];0)=0;[Таблица1]![Поле1];IIf(nz([Таблица1]![Поле1];0)<>NZ([Таблица2]![Поле2];0);[Таблица1]![Поле1];[Таблица2]![Поле2]))

Этот запрос работает не правильно. Подскажите в чем ошибка.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796324
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторяю:

Если "Поле1" "Таблицы1" равно "Поле2" "Таблицы2" - то в результат записывается "Поле1".
Если "Поле1" "Таблицы1" отличается от "Поля1" "Таблицы2" - в новом поле записать "Поле1".


Исходя из этой логики - не важно что Поле1" "Таблицы1" равно "Поле2" или
Поле1" "Таблицы1" не равно "Поле2" - все равно надо писать "Поле1"

И уже
Если "Поле2" содержит пустую строку, а "Поле1" содержит значение, то в результат записывается "Поле1" - оказывается не существенным!
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796358
Нужно реализовать следующий момент:

Слить в WORD запрос и сделать так, чтобы численное значение "Поля1" отличное от численного значения "Поле2" выделялось жирным цветом. А значение, которое есть в "Поле1" и, которого вообще нет в "Поле2" выделялось курсивом.

Дмитрий посоветуй, как можно сделать.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796471
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
Select
  t1.f1,
  t2.f2, 
  isnull(t2.f2) as is_cursiv,
  iif((not isnull(t2.f2)) and (t1.f1 <> t2.f2), True, False) as is_bold
From t1 ... join t2 on t1.id = t2.id 
?

Или я не в тему влез?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796475
Переформулирую задачу.

Если численное значение "Поля1" отличное от численного значения "Поле2" писать 1.
Если значение, которое есть в "Поле1" и, которого вообще нет в "Поле2" писать 2.

Подскажите, как реализовать такое выражение.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796482
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если эти оба условия не выполняются, что писать?

т.е. если Поле1 = Поле2?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796488
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+

А что если Поле1 Is Null?
Или это не возможно по определению?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796498
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть добавить еще одно поле-флаг, которое будет определять что с полем надо делать, допустим, если возвращается 0 - поля равны; 1 - "Поля1" отлично от численного значения "Поле2"; 2 - если есть значение в "Поле1" которого вообще нет в "Поле2". По значению этого поля изменять шрифт в ворде.

Однако, до сих пор не понятно, что тебе нужно:
Что писать если оба поля 1 и два содержат Null, и что значит значение в "Поле1" которого вообще нет в "Поле2" ? Что одно из них нулевое или в поле 2 содержится часть текста (числа?) поля 1?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796500
Писать 0.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796507
Поле1 = Поле 2. Писать 0.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796513
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы тут все про какое-то ЧИСЛЕННОЕ ЗНАЧЕНИЕ толкуете

я что-то не понял, это просто поля надо сравнивать (<>, =) или как-то еще?

Код: plaintext
iif(isnull(Поле2),  2 , iif(Поле1<>Поле2, 1 , 0 ))
Не то?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796531
>>Однако, до сих пор не понятно, что тебе нужно:
Что писать если оба поля 1 и два содержат Null.

Если "Поле1" = Null, "Поле2" = Null, так и оставлять Null.

>>и что значит значение в "Поле1" которого вообще нет в "Поле2"? Что одно из них нулевое или в поле 2 содержится часть текста (числа?) поля 1?

"Поле1" содержит числ значение. "Поле2" нулевое.

>>Может быть добавить еще одно поле-флаг, которое будет определять что с полем надо делать, допустим, если возвращается 0 - поля равны; 1 - "Поля1" отлично от численного значения "Поле2"; 2 - если есть значение в "Поле1" которого вообще нет в "Поле2". По значению этого поля изменять шрифт в ворде.

Посоветуй как написать выражения для вышенаписанного блока.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796538
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СТОП!!!

Пока мы тут все не запутались.

Быстренько читаем правила форума, и верхний топик (там Гео что-то накатал умное)
Потом даем на форум тестовые данные, и что должно получиться!!!



ОК?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796578
Например:

Поле1 содержит: 15
Поле2 содержит: 15
Результат: 0

Поле1 содержит: 15
Поле2 содержит: 0
Результат: 1

Поле1 содержит: 15
Поле2 содержит: 123
Результат: 2
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796616
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле1 содержит: Null
Поле2 содержит: 15
Результат: ?

Поле1 содержит: 15
Поле2 содержит: Null
Результат: ?

Поле1 содержит: Null
Поле2 содержит: Null
Результат: ?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796623
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И

Поле1 содержит: 15
Поле2 содержит: 15 3
Результат: 2 ?

Поле1 содержит: 15
Поле2 содержит: 2 15
Результат: 2 ?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796673
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПоле1 содержит: 15
Поле2 содержит: 0
Результат: 1
Мы вам про Null, а вы нам про ноль!
Две большие разницы, между прочим!

Код: plaintext
iif(поле2= 0 ,  2 , iif(поле1<>поле2,  1 ,  0 ))
или я это уже писал?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796681
Поле1 содержит: Null
Поле2 содержит: 15
Результат: 0

Поле1 содержит: Null
Поле2 содержит: Null
Результат: 0

Поле1 содержит: 15
Поле2 содержит: Null
Результат: 1

Поле1 содержит: 15
Поле2 содержит: 153
Результат: 2

Поле1 содержит: 15
Поле2 содержит: 215
Результат: 2

Дмитрий огромное спасибо за помощь. Извини за кривую формулировку.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796703
И еще вопрос:

IIf(nz([Поле1],0)<>NZ([Поле2],0),[Поле1],[Поле2])

Это выражение на сравнение двух полей, на предмет отличия "Поля1" от "Поля2". Если отличные писать "Поле1", одинаковые "Поле2".

А как дописать сюда, если "Поле1" = Null, "Поле2" = число, тогда Результат "Поле2".
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796751
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наводящий вопрос: могут ли поля Поле1 и Поле2 быть отрицательными? Каков вообще тип полей - если численный, то это double или целочисленный (int, long)? Или это текстовое поле? От ответов будет зависеть решение.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797174
>> Наводящий вопрос: могут ли поля Поле1 и Поле2 быть отрицательными? Каков вообще тип полей - если численный, то это double или целочисленный (int, long)? Или это текстовое поле? От ответов будет зависеть решение.

Отрицательными - нет, не могут.
Тип полей - текстовый.
Допускаются значения как численные: 12, 34 так и смешанные: F1, F2.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797199
Пишу следующее выражение:

IIf(Val(nz([Поле1];0))=0 And Val(nz([Поле2];0))<>0;[Поле2];IIf(nz([Поле1];0)<>nz([Поле2];0);[Поле1];[Поле2]))

Для численных значений получается нормально:

Поле1: 20
Поле2: 20
Рез.: 20

Поле1: 0
Поле2: 20
Рез.: 20

Поле1: 20
Поле2: 52
Рез.: 20

Поле1: 57
Поле2: 0
Рез.: 57

Поле1: F2
Поле2: 0
Рез.: F2

Только здесь не то, что нужно:

Поле1: 0
Поле2: F7
Рез.: 0 (должно быть по идее F7, как с числами)

Подскажите в чем загвоздка. Спасибо.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797259
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я составил такую таблицу:
Поле1 Поле2 Результат Флаг
Null Null Null 0
Null X Null 0
X Null Поле1 1
X X Поле1 0
X Y Поле2 2

(Если я не прав - поправь меня)

Отсюда видим, что Поле2 является результатом если Поле2 и Поле1 не рулевые и не равны между собой, если же Поле1 нулевое, то результат тоже нулевой, в остальных случаях результат - Поле1

IIF(Not (IsNull(Поле1) Or IsNull(Поле2)) And Поле1 <> Поле2, Поле2,
IIF(IsNull(Поле1), Null, Поле1))

Для флага рассуждения немного иные
IIF(Not (IsNull(Поле1) Or IsNull(Поле2)) And Поле1 <> Поле2, 2,
IIF(Not IsNull(Поле1) And IsNull(Поле2), 1, 0))
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797308
Дмитрий спасибо тебе за помощь.

Следующий вариант работает, но только вот это не работает (нужно какую-то коррекцию сделать здесь, и соответсвенно от этого выражения придумать выражения для флага):

Поле1: 0
Поле2: F7
Рез.: 0 (должно быть по идее F7, как с числами, а в результате все равно 0)

IIf(Val(nz([Поле1];0))=0 And Val(nz([Поле2];0))<>0;[Поле2];IIf(nz([Поле1];0)<>nz([Поле2];0);[Поле1];[Поле2]))

Таблица следующая должна быть:

N - Null
Р - результат
Ф - флаг

1 2 Р Ф
-------
N N N 0
N X X 0
X N X 1
X X X 0
X Y X 2
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797355
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отличие твоей таблички от моей только в одном: N X X 0, что ведет к измкнкнию первой моей формулы

IIF((IsNull(Поле1) And IsNull(Поле2), Null,
IIF(IsNull(Поле1), Поле2, IIF(IsNull(Поле2), Поле1, Поле1))

Формула для флага - неизменна
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797385
Записал твое выражение:

IIf(IsNull([Поле1]) And IsNull([Поле2]);Null;IIf(IsNull([Поле1]);[Поле2];IIf(IsNull([Поле2]);[Поле1];[Поле1])))

Здесь почти все идеально, только

П1:0
П2:20
Р:0 (должно быть 20)

П1:0
П2:F7
Р:0 (должно быть F7)

Подскажи в чем ошибка?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797411
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка в том - что не учтены все ситуации! Составь твблицу вновь и распиши в ней все возможные и невозможные ситуации! Проигай их на бумаге! И только после этого садись писать программу! Большинство варианотов написания у тебя есть!
Дерзай! Удачи!
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797542
IIf(IsNull([Поле1]) And IsNull([Поле2]);Null;IIf(IsNull([Поле1]);[Поле2];IIf(IsNull([Поле2]);[Поле1];[Поле1])))

Это фактическая реализация

N N N 0
N X X 0
X N X 1

Должно быть по идее еще 2 условия. Пытаюсь сделать 4,5 условий, получается какая-то конитель.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797569
Написал выражение

IIf(IsNull([Поле1]) And IsNull([Поле2]);Null;IIf(IsNull([Поле1]);[Поле2];IIf(IsNull([Поле2]);[Поле1];IIf([Поле1]=[Поле2];[Поле2];IIf([Поле1]<>[Поле2];[Поле1];[Поле2])))))

Получается

П1:0
П2:20
Р:0 (должно быть 20)

П1:0
П2:F7
Р:0 (должно быть F7)

Дмитрий, будь добр, подскажи как грамотно составить выражение. А то я что-то уже совсем не могу додумать.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797648
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IIf(IsNull([Поле1]) And IsNull([Поле2]);Null;IIf(IsNull([Поле1]);[Поле2];IIf(IsNull([Поле2]);[Поле1];IIF([Поле1] = "0", [Поле2], [Поле1]))))

Еще раз внимательно прочти топики от 16:42 paparome и мой от 11:00 сегодня!
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32798048
Дмитрий, огромное спасибо. Это то, что нужно. Ты мне очень помог.

Еще вопросик. А как быть с флагами, исходя из этого выражения?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32798361
Дмитрий, попробовал использовать твой пример формулы для флага:

IIf(Not (IsNull([Поле1]) Or IsNull([Поле2])) And [Поле1]<>[Поле2];2;IIf(Not IsNull([Поле1]) And IsNull([Поле2]);1;0))

Получается какая-то ерунда. Очень много отображается полей с "Ошибкой".
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сравненией записей из 2-х таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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