Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск в базе по заданным критериям 
:(
    Опции темы
kizune
Дата 19.11.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 10.7.2007

Репутация: нет
Всего: 9



Привет,всем.
Такой вопрос новичка.

как осуществить такую логику:
юзер вводит данные code и phone нажимает search
идем в table1 ищем соответствия:
а. есть соответствия - берем codeId - идем в таблицу table2 находим там codeId и areaId - вытаскиваем соответственные данные Phone, Fax - отображаем на странице
б. нет соответствий - вывод сообщения "ничего не найдено"
 
или где можно почитать про осуществление подобной логики с примерами

спасибо




Это сообщение отредактировал(а) kizune - 19.11.2007, 14:32
PM MAIL   Вверх
thomas
Дата 19.11.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



kizune, 
Приветствую.
Для начала не плохо бы знать какие поля содержит таблица1 и таблица2. А так же как они связаны.
Потом что означает в этой фразе
Цитата

юзер вводит данные code и phone нажимает search

слово code?
Потом если вы ищете запись по codeId и собираетесь на её основании получить phone и fax из второй таблицы, то зачем вводить на равне с code еще и phone?

Цитата

где можно почитать про осуществление подобной логики с примерами

Любую книжку по нормализации данных и рассказывающую об SQL.
Вам надо знать как спроектировать БД и получать из нее данные посредством SQL-запросов.

В принципе всё.

Да, и что бы всем этим рулить из VS необходимо знать ADO.NET.

Успехов.  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
alik_voodoo
Дата 19.11.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 31.10.2006

Репутация: нет
Всего: нет



Тебе не сюда, тебе в SQL форумы, ищи инфу по inner join.
PM MAIL   Вверх
kizune
Дата 20.11.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 10.7.2007

Репутация: нет
Всего: 9



thomas,
Цитата

Потом что означает в этой фразе
Цитата

юзер вводит данные code и phone нажимает search

слово code?

это такое же значение как и phone.

Цитата

Потом если вы ищете запись по codeId и собираетесь на её основании получить phone и fax из второй таблицы, то зачем вводить на равне с code еще и phone?

здесь я неправильно выразилась.допустим надо получить не просто phone, а к примеру - LocalPhone

alik_voodoo,спасибо,буду искать

еще вопрос вот например я ввожу в текстовое поле id='tbPhone'  какое-то значение например 378945,нажимаю кнопку search:


Код

private void bnSearch_Click(object sender, EventArgs e)
    {
        String strConnect;
        String strCommand;
        SqlConnection conn;
        SqlCommand cmd;
        conn = new SqlConnection("server=localhost;database=db; uid=sa; pwd=open");
        conn.Open();
        strCommand = "SELECT Phone FROM table1";
        cmd = new SqlCommand(strCommand, conn);
         
       
    }  


 как быть дальше в смысле проверить есть ли там такое значение или нет?

спасибо

Это сообщение отредактировал(а) kizune - 20.11.2007, 13:30
PM MAIL   Вверх
thomas
Дата 20.11.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



kizune, 
Повторюсь 
Цитата
Для начала не плохо бы знать какие поля содержит таблица1 и таблица2. А так же как они связаны.

Этот ответ 
Цитата
это такое же значение как и phone.
 еще боьше запутал ситуацию. Потому как далее по тексту появилось LocalPhone.
Далее 
Цитата
я ввожу в текстовое поле id='tbPhone'  какое-то значение например 378945,нажимаю кнопку search: ... как быть дальше в смысле проверить есть ли там такое значение или нет? 
 Если вы изначально знаете ID, то оно конечно там есть. Но если вы вводите ID "от балды", то в чем смысл?

Попробуйте словами описать что должна делать программа. И покажите как организовано хранение данных(см. первую цитату). Тогда можно будет ответить что и как. А так ... , я же не экстрасенс. 

А проверить существует запись в таблице или нет можно выполнив следующий запрос
Код

SELECT Count(*) AS total FROM tblMyTable WHERE phone = '555-22-33'

подставив его в метод cmd.ExecuteScalar примерно так
Код

public object DoScalar(string sql)
        {
            object oRes = null;

            try
            {
                dbCmd.CommandText = sql;
                dbCmd.CommandType = CommandType.Text;
                dbCon.Open();
                oRes = dbCmd.ExecuteScalar();
            }
            catch (Exception Ex)
            {
                System.Windows.Forms.MessageBox.Show("Fout SqlDB.doScalar " + sql + ": " + Ex.Message);
            }
            //finally
            {
                dbCon.Close();
                return oRes;
            }
        }

Функция возвратит значение подсчета строк отвечающих данному условию. Соответственно, если вернет "0", то такого телефона нет, если вернет "1" или более значит есть.




--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
kizune
Дата 20.11.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 10.7.2007

Репутация: нет
Всего: 9



Цитата

Для начала не плохо бы знать какие поля содержит таблица1 и таблица2. А так же как они связаны.


таблица1 содержит:

codeId, code, phone
(при поиске соответствий сначала ищем по двум параметрам code, phone.если точных соответствий не найдено ищем только по code)

таблица2 содержит:

codeId, areaId, LocalPhone, Fax

связаны таблицы через codeId





PM MAIL   Вверх
thomas
Дата 20.11.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



kizune, 
если я правильно понял, то имеем следующее:
таблица1
CodeId - PK
code
phone

таблица2
areaId - PK - ???
codeId - FK
LocalPhone
Fax

 
Цитата

при поиске соответствий сначала ищем по двум параметрам code, phone.если точных соответствий не найдено ищем только по code

code - это что код страны?
phone  - номер телефона?

Какая задача стоит? До сих пор не понятно. Ходим вокруг да около.
Неужели сложно написать что-то типа:
имееются клиенты, данные(ФИО, адрес, бла бла) о них храняться в таблице1;
имются контактные лица, данные о них храняться в таблице2.
Необходимо для заданного клиента найти контактное лицо и получить его данные из БД.

На данный момент меня терзают сомнения что у вас не правильно организовано хранение данных.
В чем разница между phone и localphone?

Для поиска каких либо данных в таблице БД используются оператор условия WHERE в sql-запросе. Если есть значение удовлетворяющее условию он его вернет.

Добавлено через 3 минуты и 7 секунд
Для фильтрации данных в таблице ДатаСет, которые нужно отобразить существует обьект DataView с методом RowFilter


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
kizune
Дата 20.11.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 10.7.2007

Репутация: нет
Всего: 9



извини,если неправильно выражаюсь
Цитата

таблица1
CodeId - PK
code
phone

таблица2
areaId - PK - ???
codeId - FK
LocalPhone
Fax


таблица2 codeId - PK

Цитата

code - это что код страны?
phone  - номер телефона?


code - код региона страны
phone - номер телефона

в результате поиска необходимо вывести на страницу LocalPhone и Fax контактного лица организации.phone - номер телефона организации LocalPhone - номер телефона контактного лица.

таблица1
сodeId - идентификатор кода региона
code - код региона
phone - телефон организации

таблица2
areaId - идентификатор названия региона
codeId - идентификатор кода региона
LocalPhone - телефон контактного лица
Fax - контактного лица

необходимо по заданному коду региона и телефону найти телефон и факс контактного лица

Это сообщение отредактировал(а) kizune - 20.11.2007, 17:21
PM MAIL   Вверх
thomas
Дата 20.11.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



kizune, 
Подожди немного, сейчас сделаем.  smile 

Так для начала вот примерно так должна выглядеть схема БД.
user posted image
Таблицы связаны "один-ко многим".
В регионе может быть несколько организаций.
У организации может быть несколько контактных лиц.

А что бы получить ответ на этот вопрос
Цитата

необходимо по заданному коду региона и телефону найти телефон и факс контактного лица

пишем такой sql-запрос к БД
Код

SELECT КонтактноеЛицо.Телефон, КонтактноеЛицо.Факс
FROM Регион INNER JOIN (Организация INNER JOIN КонтактноеЛицо ON Организация.ОрганизацияID = КонтактноеЛицо.ОрганизацияID) ON Регион.РегионID = Организация.РегионID
WHERE (((Организация.Телефон)=[?]) AND ((Регион.НазваниеРегиона)=[?]));


По названию региона и по телефону организации (в этом регионе) получаем телефон и факс контактного лица (в этой организации) 
Если оно(лицо) есть.  smile 

ЗЫ 
    
kizune, 
 я отлучусь не надолго. Есть вопросы пиши.  smile 



Это сообщение отредактировал(а) thomas - 20.11.2007, 17:58


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
kizune
Дата 20.11.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 10.7.2007

Репутация: нет
Всего: 9



благодарю за разъяснение smile 
только мне нужно сделать этот запрос через
SqlConnection, SqlCommand итд на c#.поэтому я в растерянности
 


Это сообщение отредактировал(а) kizune - 20.11.2007, 18:38
PM MAIL   Вверх
thomas
Дата 20.11.2007, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



kizune, 
Цитата

мне нужно сделать ... на c#.поэтому я в растерянности

Вот что бы избавить вас от растерянности, соорудил примерчик с БД.
Коментариев достаточно, думаю поймете.

Да, БД сделал не серверную извините.Но принципиальной разницы нет. Провайдера поменяете и OleDb на Sql.
Чтобы посмотреть как работает отредактируйте путь к базе в connectionString.

Успехов.

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  WindowsApplication1.rar 45,14 Kb


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
kizune
Дата 21.11.2007, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 10.7.2007

Репутация: нет
Всего: 9



большое спасибо smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.