Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
belovchanin
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 12
1

Перебор значений в таблице и сравнение с другой

23.01.2015, 13:22. Просмотров 1057. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Нужна помощь.
есть таблица в БД Oracle tabl с полями dat, otpravitel, poluchatel, jurnal и есть таблица tabl2 с полями dat, otpravitel и polucjatel, jurna

причем dat имеет формат '01.01.2015 14:20'

я знаю как просто вывести на экран значения
C#
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
static void Main(string[] args)
        { table.Columns.Add("jurnal", typeof(string));
            _oracleConnection.Open();
            OracleTransaction _tran = _oracleConnection.BeginTransaction();
            OracleCommand _cmd = _oracleConnection.CreateCommand();
            _cmd.Transaction = _tran;
          _cmd.CommandText = "SELECT jurnal FROM tabl WHERE  DAT>=to_date(:D,'dd.mm.yyyy') order by JURNAL";
            _cmd.CommandType = CommandType.Text;
            _cmd.Parameters.Clear();
 
            //Использование переменной D из запроса с форматом ввода
 
            _cmd.Parameters.AddWithValue("D", "01.11.2014");
            OracleDataAdapter _da = new OracleDataAdapter(_cmd);
            _da.Fill(0, 100, table);
             
 
            OracleDataReader _dR2 = _cmd.ExecuteReader();
 
            _dR2.Read();
                
 
            Console.WriteLine(_dR2["juznal"]);
                    
             _oracleConnection.Close();
             Console.ReadKey(); //чтобы не закрывалось
Вопрос: как сделать чтобы проверить журналы на порядковый номер, а заранее проверить соттветсвия в таблице как пересравнить типа tabl.poluchatel = tabl2.otpravitel и после вывести на экран пропущеные номера.
я заколебался что то не получается у меня. Перечитал форумы и книги, как сделать сравнение с перебором этим и вывести на экран?

в запросе вылезит мордочка - это переменная D, перед ней :
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2015, 13:22
Ответы с готовыми решениями:

Перебор данных в таблице.
Добрый вечер. Опять проблемма по БД. Вопрос такой как считать ячейку таблици бд Например таблица...

Сравнение всех значений поля в одной таблице со значением одного поля в другой
Пожалуйста помогите! БД в Access. Две таблицы id и ip. Поле pn таблицы id связан с полем id...

Перебор и сравнение значений
Добрый день. Столкнулся с проблемой перебора. Есть входные данные и массив с константами. Требуется...

Перебор отфильтрованных значений в сводной таблице
Добрый день, Подскажите, пжл, как можно выбрать отфильтрованные значения в сводной таблице. В...

Перебор значений циклом в ОЛАП сводной таблице
Добрый день! Пишу макрос связанный с ОЛАП кубом. необходимо для начала получить количество...

6
Grossmeister
Модератор
3473 / 2512 / 437
Регистрация: 21.01.2011
Сообщений: 11,013
23.01.2015, 13:34 2
Цитата Сообщение от belovchanin Посмотреть сообщение
как пересравнить типа tabl.poluchatel = tabl2.otpravitel и после вывести на экран пропущеные номера
Что такое "пересравнить"?
Пропущенные номера м.б. только в одной таблице (вторая является эталоном) или в обеих таблицах?
0
belovchanin
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 12
23.01.2015, 14:12  [ТС] 3
Сранение: если tabl.poluchatel = tabl2.otpravitel, то просчёт значений jurnal , если там пропущен номер, то вывести его на экран

Добавлено через 23 минуты
нет пропущенные значения в одной таблице, номер журнала по формуле (предыдущее значение +1 - теущий номер) = 0, если не 0, то вывести номер журнала и отправитель типа того
0
Grossmeister
Модератор
3473 / 2512 / 437
Регистрация: 21.01.2011
Сообщений: 11,013
23.01.2015, 15:10 4
Цитата Сообщение от belovchanin Посмотреть сообщение
нет пропущенные значения в одной таблице
Тогда чем не устраивает обычный LEFT/RIGTH OUTER JOIN ?
0
belovchanin
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 12
23.01.2015, 15:25  [ТС] 5
задача такая стоит. мне бы узнать как это в цыкле закрутить, что бы переменная проверялась покуда есть значения в таблице по отправителям. и на выходе проверять значение порядкового номера журнала (пропущенные нужны). на pl/sql можно сравнить с порядковым столбцом - пробывал - можно, но это нужно на c# и вывод должен быть по отправителям + пропущенные номера журнала на экран.
0
belovchanin
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 12
27.01.2015, 09:05  [ТС] 6
В общем вывод из Oracle будет списком, общие данные сгруппированные, т.е чтобы на каждого вывести отдельный, нужно кол-во запросов на количество отправителей. а чтобы вывести в отчёт на каждого отдельного и потом отправить например по почте на своего получателя, как вариант, такое не возможно сделать в oracle. проще сделать в Visual Studio. только не пойму как. кучу курсов просмотрел, прочитал много литературы, хоть бы один пример где найти, посмотреть как реализуется подобное.

Добавлено через 3 часа 2 минуты
алгоритм действий:
1. Вычисляются ID отправителей от указанной ранее даты
2. Вычисляются последние номера журнала на каждого получателя исходя из ранее вычеленого отправителя (на каждого получателя по списку проверяется каждый отправитель)
3. номера журнала порядковый и если где то номер пропущен, то вывести на экран какой отправитель не дошел до БД.
пердыдущий номер плюс 1 минус текущий равно 0 (пр.номер + 1 - текущий = 0), если 0, то верно, иначе вывести на экран предыдущий + 1

номера приходят из вне. но они должны быть порядковые. если где то номера журнала по отправителю относительно получателя идут например 55,56,58 , значит №57 пакет пропущен. как то так. и я не знаю как пустить циклы с таблицами. просто вывести на экран не проблема но 1 таблицу, можно по очереди 2 таблицы, а вот чтобы перепроверялись между собой - как то сложновато. Пока я не могу такое решать, но скоро сам на такие отвечать в этом форуме буду. Нужна помощь, сроки как то жмут, зачёт нужен край.

Добавлено через 21 час 20 минут
Зделал цикл for в нутри каждого полностью создал транзакцию и новые соединения, а в конце закрыл.
Вывел отчёт на экран Console.WriteLine(переменная[]);
Вопрос:
XX.Fill(0, 100, table);
почему не все записи показывает из запроса?
0
belovchanin
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 12
28.01.2015, 10:26  [ТС] 7
C#
1
string res11 = table1.Rows[0][0].ToString();
кстати - решил таким вот образом прошлую проблему.

Добавлено через 7 минут
Решил таким вот образом прошлую проблему и упростил вывод на экран:

C#
1
2
3
4
5
6
7
8
for (int i = 0; i <= table.Rows.Count - 1; i++)
{
// всякие подключения и манипуляции с переменными ))
...
string result = table1.Rows[0][0].ToString(); // создание строковой переменной
Console.WriteLine(table1.Rows[i][0]); //вывод на экран из массива
Console.ReadKey(); // ждёт когда кнопку нажать
}
Всем спасибо как говорится.
0
28.01.2015, 10:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2015, 10:26

Сопоставление значений в таблице со значениями в другой таблице
Добрый день! Помогите, пожалуйста, решить следующий пример: Существуют две таблицы: в первой...

SQL. Вывод значений из таблицы и подсчет количества этих значений в другой таблице
Задание звучит так: Для таблиц user и phones, где соответствие записей определяется равенством...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru