| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > поиск в базе по заданным критериям |
| Автор: kizune 19.11.2007, 14:29 |
| Привет,всем. Такой вопрос новичка. как осуществить такую логику: юзер вводит данные code и phone нажимает search идем в table1 ищем соответствия: а. есть соответствия - берем codeId - идем в таблицу table2 находим там codeId и areaId - вытаскиваем соответственные данные Phone, Fax - отображаем на странице б. нет соответствий - вывод сообщения "ничего не найдено" или где можно почитать про осуществление подобной логики с примерами спасибо |
| Автор: thomas 19.11.2007, 15:52 | ||||
| kizune, Приветствую. Для начала не плохо бы знать какие поля содержит таблица1 и таблица2. А так же как они связаны. Потом что означает в этой фразе
слово code? Потом если вы ищете запись по codeId и собираетесь на её основании получить phone и fax из второй таблицы, то зачем вводить на равне с code еще и phone?
Любую книжку по нормализации данных и рассказывающую об SQL. Вам надо знать как спроектировать БД и получать из нее данные посредством SQL-запросов. В принципе всё. Да, и что бы всем этим рулить из VS необходимо знать ADO.NET. Успехов. |
| Автор: alik_voodoo 19.11.2007, 17:46 |
| Тебе не сюда, тебе в SQL форумы, ищи инфу по inner join. |
| Автор: kizune 20.11.2007, 12:47 | ||||||
thomas,
это такое же значение как и phone.
здесь я неправильно выразилась.допустим надо получить не просто phone, а к примеру - LocalPhone alik_voodoo,спасибо,буду искать еще вопрос вот например я ввожу в текстовое поле id='tbPhone' какое-то значение например 378945,нажимаю кнопку search:
как быть дальше в смысле проверить есть ли там такое значение или нет? спасибо |
| Автор: thomas 20.11.2007, 16:01 | ||||||||||
| kizune, Повторюсь
Этот ответ
Далее
Попробуйте словами описать что должна делать программа. И покажите как организовано хранение данных(см. первую цитату). Тогда можно будет ответить что и как. А так ... , я же не экстрасенс. А проверить существует запись в таблице или нет можно выполнив следующий запрос
подставив его в метод cmd.ExecuteScalar примерно так
Функция возвратит значение подсчета строк отвечающих данному условию. Соответственно, если вернет "0", то такого телефона нет, если вернет "1" или более значит есть. |
| Автор: kizune 20.11.2007, 16:29 | ||
таблица1 содержит: codeId, code, phone (при поиске соответствий сначала ищем по двум параметрам code, phone.если точных соответствий не найдено ищем только по code) таблица2 содержит: codeId, areaId, LocalPhone, Fax связаны таблицы через codeId |
| Автор: thomas 20.11.2007, 16:53 | ||
| kizune, если я правильно понял, то имеем следующее: таблица1 CodeId - PK code phone таблица2 areaId - PK - ??? codeId - FK LocalPhone Fax
code - это что код страны? phone - номер телефона? Какая задача стоит? До сих пор не понятно. Ходим вокруг да около. Неужели сложно написать что-то типа: имееются клиенты, данные(ФИО, адрес, бла бла) о них храняться в таблице1; имются контактные лица, данные о них храняться в таблице2. Необходимо для заданного клиента найти контактное лицо и получить его данные из БД. На данный момент меня терзают сомнения что у вас не правильно организовано хранение данных. В чем разница между phone и localphone? Для поиска каких либо данных в таблице БД используются оператор условия WHERE в sql-запросе. Если есть значение удовлетворяющее условию он его вернет. Добавлено через 3 минуты и 7 секунд Для фильтрации данных в таблице ДатаСет, которые нужно отобразить существует обьект DataView с методом RowFilter |
| Автор: kizune 20.11.2007, 17:20 | ||||
извини,если неправильно выражаюсь
таблица2 codeId - PK
code - код региона страны phone - номер телефона в результате поиска необходимо вывести на страницу LocalPhone и Fax контактного лица организации.phone - номер телефона организации LocalPhone - номер телефона контактного лица. таблица1 сodeId - идентификатор кода региона code - код региона phone - телефон организации таблица2 areaId - идентификатор названия региона codeId - идентификатор кода региона LocalPhone - телефон контактного лица Fax - контактного лица необходимо по заданному коду региона и телефону найти телефон и факс контактного лица |
| Автор: thomas 20.11.2007, 17:32 | ||||
| kizune, Подожди немного, сейчас сделаем. Так для начала вот примерно так должна выглядеть схема БД. ![]() Таблицы связаны "один-ко многим". В регионе может быть несколько организаций. У организации может быть несколько контактных лиц. А что бы получить ответ на этот вопрос
пишем такой sql-запрос к БД
По названию региона и по телефону организации (в этом регионе) получаем телефон и факс контактного лица (в этой организации) Если оно(лицо) есть. ЗЫ kizune, я отлучусь не надолго. Есть вопросы пиши. |
| Автор: kizune 20.11.2007, 18:22 |
| благодарю за разъяснение только мне нужно сделать этот запрос через SqlConnection, SqlCommand итд на c#.поэтому я в растерянности |
| Автор: thomas 20.11.2007, 23:25 | ||
kizune,
Вот что бы избавить вас от растерянности, соорудил примерчик с БД. Коментариев достаточно, думаю поймете. Да, БД сделал не серверную извините.Но принципиальной разницы нет. Провайдера поменяете и OleDb на Sql. Чтобы посмотреть как работает отредактируйте путь к базе в connectionString. Успехов. |
| Автор: kizune 21.11.2007, 10:38 |
| большое спасибо |