Поиск однофамильцев
Здравствуйте!
Обращаюсь к вам за помощью.
У меня имеется таблица с Именами и Фамилиями(в одном поле).Мне нужно создать форму,в которую пользователь мог бы ввести фамилию,и форма бы вывела количество однофамильцев в таблице.
Скажите,как это осуществить?Здесь нужно привязывать запрос?
Только прошу без кода VBA (имею ввиду без посредственного написания кода,только макрос)..
спасибо
Добавлено через 4 минуты
может,в источник строк (на поле,где будет выведено к-во однофамильцев) нужно написать запрос с условием Count и условие = поле,куда пользователь вводит фамилию?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Корректный поиск однофамильцев в базе
Добрый день! Помогите, пожалуйста, как правильно создать базу данных, чтобы получать корректные.
база данных. Запрос отобрать однофамильцев
как из таблицы отобрать однофамильцев: Суханов и Суханова с помощью контсруктора не SQL. Я.
БД «Студенты». Запрос о наличии студентов-однофамильцев.
Привет! Помогите решить задачу. Условие такое: Сведения о студенте состоят из его имени, фамилии.
Выборка нескольких однофамильцев в разных учебных классов
Есть таблица Класс — Фамилия 1-Иванов 1-Петров 1-Сидоров 1-Медведев 1-Путин 2-Ельцин.
Источник
Вывести список однофамильцев
Вот такой запрос:
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Составить список лиц, не имеющих в списке однофамильцев
1. Сформировать список группы студентов, каждая запись которого имеет следующую структуру: фамилия.
Выдать на экран список всех однофамильцев (примечание: Иванов и Иванова — однофамильцы)
подскажите как найти однофамильцев в базе (case 6)?? я додумался только как сравнивать первые.
Составить другой список сотрудников, в котором перечислены фамилии однофамильцев исходного
Дан список фамилий сотрудников. Составить другой список, в котором перечислены фамилии.
Напечатать список класса с указанием для каждого ученика количество его однофамильцев
В строковом массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список класса.
Вы хотите в поиске ввести фамилию и отобразить всех в DataGridView с этой фамилией?
по-русски если (Выбрать всех в таблице ProfileBase где фамилия указана в ТекстБоксе)
Запрос то правильный. В чём трудности? Занести в DataGrid?
Покажите как читаете этот запрос.
Зачем Вы всё асинхронно выполняете?
Добавлено через 7 минут
Вот Вам поиск по имени в ячейке. Повесьте это на событие button1_Click
Зачем Вы всё асинхронно выполняете?
Добавлено через 7 минут
Вот Вам поиск по имени в ячейке. Повесьте это на событие button1_Click
По моему мнению здесь в элемент DataGridView записываются значения первой таблицы. Первая — та, которая существует в момент создания dataset.
Асинхронно выполняю, чтобы форма не тормозилась.
Буду признательна вам за помощь. Я сделала Месседж бокс, но снова появилась та же ошибка, что не существует Таблицы 0. А куда она девается? Нигде не было команды очистить, я только добавляла туда данные.
Или же вы намекаете, что у меня и не существовало никогда таблицы 0?
Сейчас попробую предложенный вами вариант.
Добавлено через 23 минуты
Ээх если бы мне только подсветить, а не вывести. А мне нужен список.
Добавлено через 36 минут
А что-то вроде этого нельзя сделать? Я хотела сделать нужную команду, потом задать её адаптеру, и заполнить ДатаГридВью.
Источник
Тема 3. Язык SQL. Формирование запросов к базе данных
Изучить реализацию стандартного языка запросов в сервере MS SQL Server 2000 в части разработки простых запросов.
Оглавление
Задания
- Познакомиться со структурой учебной базы данных «Сессия».
- Изучить интерфейс интерактивного средства выполнения запросов Query Analyzer.
- Научиться писать и исполнять простые запросы на языке SQL к учебной базе данных «Сессия».
1. Структура учебной базы данных «Сессия»
Учебная база «Сессия» отражает результаты сдачи текущей сессии в некотором виртуальном учебном заведении. Большинство из вас училось или учится в настоящий момент в институте, университете или колледже, поэтому для вас данная предметная область интуитивно понятна. Именно поэтому данная база будет первой для нашего изучения. Схема базы данных «Сессия» приведена на рис. 1.
Рассмотрим содержание отдельных таблиц в нашей базе данных. Будем считать, что термины отношение и таблица являются для нас синонимами, и мы можем пользоваться ими в равной степени, не забывая об особенностях реляционных таблиц.
База данных «Сессия» включает пять таблиц, соединенных между собой.
- Учебные планы по специальностям (uch_plan). Таблица uch_plan содержит перечень специальностей, по которым обучаются студенты нашего виртуального учебного заведения, с указанием дисциплин, по которым студенты каждой специальности должны сдавать экзамены в текущую сессию. В данной таблице два поля:
- kod_spec код специальности. В соответствии с новым перечнем специальностей и направлений подготовки в сфере высшего образования, в нашей стране код специальности или направления это целое число в пределах 100 000. Поэтому в нашей базе данных код специальности это целое число (тип данных int , под который отводится 4 байта).
- Discipline наименование дисциплин, по которым надо сдавать экзамен студентам данной специальности.
Так как в нашем учебном заведении множество специальностей и по каждой специальности читается множество дисциплин, по которым надо сдавать экзамен, то первичным ключом отношения uch_plan является набор из двух атрибутов: kod_spec , Discipline .
- kod_spec код специальности. Мы уже знаем, что это целое число.
- spec наименование специальности. Например, специальность с кодом 220100 имеет название «Вычислительные машины, комплексы, системы и сети», поэтому в нашем случае данному полю присвоен символьный тип данных varchar с ограничением по длине в 256 символов.
Первичным ключом таблицы является атрибут kod_spec (код специальности), потому что в нашем списке каждая специальность повторяется только один раз, и код специальности однозначно идентифицирует всю строку в таблице. Однако наименование специальностей также разные, почему же ключом выбран код специальности? Потому что код специальности короче ее названия, а доступ по первичному ключу должен быть самый быстрый. Если вы внимательно изучили в учебнике принципы создания индексных файлов, то вы знаете, что чем короче первичный ключ, тем более быстрый доступ по нему можно организовать.
- N_groop номер группы. Это поле имеет символьный тип данных, потому что в некоторых учебных заведениях к числовому номеру группы часто добавляют и один или несколько символов. Поэтому для более общей картины будем считать это поле символьным.
- kod_spec уже рассмотренный ранее код специальности.
Первичным ключом отношения является номер группы N_groop , потому что номера групп не повторяются, и это закон предметной области. Ни в одном учебном заведении нет двух одинаковых учебных групп, которые учатся одновременно. Раньше или позднее могут быть совпадения, но одновременно одинаковых групп не бывает.
По одной специальности могут обучаться студенты нескольких групп.
- N_groop номер группы;
- Last_name фамилия;
- First_name имя;
- Middl_name отчество;
- N_zach номер зачетки, символьное поле. Номер зачетки однозначно идентифицирует студента. Поэтому, даже если среди студентов есть однофамильцы, они будут иметь разный номер зачетки. Данное поле является первичным ключом таблицы.
- N_zach номер зачетки;
- Discipline дисциплина;
- Data_ex дата экзамена;
- Mark оценка, полученная на экзамене.
Студенты могут сдавать экзамены по одной дисциплине несколько раз. Если первый раз они сдали экзамен на неудовлетворительную оценку, то они могут повторно сдавать экзамен до тех пор, пока не получат положительную оценку. Каждая попытка сдачи экзамена фиксируется и имеет конкретную дату сдачи. Первичным ключом в данной таблице является набор из трех атрибутов:
Наличие такого ключа означает, что мы запрещаем одному студенту в один день сдавать экзамен по одному предмету более одного раза. Однако не запрещено сдавать несколько экзаменов в один день, при условии что это экзамены по разным дисциплинам.
2. Интерфейс интерактивного исполнителя запросов SQL
Для подключения к базе данных «Сессия» и перехода в режим интерактивного выполнения SQL-запросов необходимо выполнить следующую последовательность действий:
- Подключиться к серверу Microsoft SQL Servers, запустив Enterprise Manager.
- Открыть SQL Server Group .
- Открыть папку Databases .
- Установить курсор на базу данных sessia , сделав ее текущей:
После этого вы увидите окно интерпретатора SQL-запросов:
Текст запроса записывается справа во внутреннем окне, расположенном в правой части главного окна. Для выполнения запроса надо щелкнуть на кнопке ( Выполнить ) на панели инструментов. Результаты запроса появятся в новом дополнительном окне под текстом запроса:
При переключении закладки на Message в качестве результата выполнения запроса вы увидите сообщение следующего типа: (5 row(s) affected) .
Если продолжить написание запросов, то при нажатии кнопки Выполнить будут последовательно выполняться все запросы, находящиеся в правом верхнем окне, а внизу будут выводиться результаты их выполнения:
При отладке запросов желательно выполнять только один последний запрос, оставив, тем не менее, все остальные в тексте. Для этого надо выделить мышью требуемый запрос и нажать кнопку Выполнить или нажать функциональную клавишу F5 . В этом случае в окне результатов появится только результат выполнения выделенного запроса.
Тексты запросов можно сопровождать комментариями. Комментарий может быть однострочный и многострочный. Однострочный комментарий начинается с двух последовательных знаков дефиса — , стоящих в начале комментария, а многострочный заключается между символами /* и */ :
Набранные запросы можно сохранить в текстовом файле. Для этого необходимо нажать кнопку ( Сохранить ) и задать имя файла и место его сохранения. По умолчанию файлу присваивается расширение .sql , однако вы можете задать произвольное расширение в момент сохранения.
Для продолжения работы сохраненный файл загружается в Query Analyzer с помощью кнопки ( Открыть файл ). После этого вы можете продолжать работу с того места, где остановились.
3. Выполнение запросов к учебной базе данных «Сессия»
При выполнении простых запросов следует придерживаться стандартного синтаксиса SQL 1.
Запрос состоит из следующих составных частей:
- список вывода, то есть список названий столбцов, возможно, с указанием их синонимов, или выражений, которые являются заголовками столбцов результирующего отношения;
- список исходных таблиц;
- условия соединения исходных таблиц и условия фильтрации при выводе результата.
Запрос начинается с ключевого слова Select . При вводе запроса транслятор сразу окрашивает ключевые слова в синий цвет, чтобы было легче визуально контролировать правильность написания стандартных ключевых слов в запросе. После слова Select формируется список вывода. В самом простом варианте вместо списка вывода можно использовать символ * (звездочка), который означает, что выводятся все столбцы, которые сформированы по результатам запроса.
Например, для того чтобы вывести содержимое таблицы Groops , надо написать следующий текст запроса:
Select * from Groops
Символ звездочки необходимо отделять от окружающих его ключевых слов пробелами.
В результате мы получим запрос следующего вида:
Обратите внимание, что ключевые слова Select и from выделены синим цветом.
Запрос можно писать структурированно, например так:
Select *
From Groops
MS SQL Server не чувствителен к регистру, поэтому текст запросов можно писать как строчными, так и прописными буквами.
Чтобы результат имел более удобочитаемый вид, можно снабдить выводимые результаты заголовками на русском языке. Заголовки отделяются от имен столбцов как минимум одним пробелом, заключаются в двойные кавычки и могут состоять из любых символов, кроме двойных кавычек.
Например, предыдущий запрос может быть записан с использованием заголовков столбцов следующим образом:
Select N_groop «Номер группы», kod_spec «Код специальности»
From groops
После выполнения запроса мы получим следующий результат:
Если в запросе используется несколько исходных таблиц, то необходимо задать корректно условия соединения этих таблиц. Условия соединения задаются в части Where запроса Select . При указании условий соединения таблиц следует применять полные или расширенные имена столбцов, которые предваряются именем таблицы, из которой этот столбец взят, и отделяются от него точкой, аналогично свойству объекта в объектно-ориентированном программировании. Например, запись Students.N_zach обозначает столбец N_zach из таблицы Students .
Достаточно распространенной ошибкой является указание в списке выводимых столбцов имени столбца без указания имени таблицы. В этом случае сервер указывает на ошибку, сообщая, что столбец определен неоднозначно. Например, при выполнении следующего запроса:
select N_zach, Last_Name
from students, sessia
Where Students.N_zach = Sessia.N_zach and mark = 2
Вы получите сообщение:
Server: Msg 209, Level 16, State 1, Line 1
Ambiguous column name ‘N_zach’
Все сообщения об ошибках начинаются фразой, выделенной красным цветом, и далее содержат текст, поясняющий обнаруженную ошибку.
В нашем случае нам сообщается, что выводимый столбец N_zach определен неоднозначно, потому что такой столбец присутствует в двух используемых таблицах, и несмотря на то, что практически безразлично, имя какой из таблиц будет предшествовать имени столбца в результате, по правилам синтаксиса нам необходимо написать, например, так:
select Students.N_zach, Last_Name
from students, sessia
Where Students.N_zach = Sessia.N_zach and mark = 2
Мы получим следующий результат:
А почему мы получили две одинаковые строки? Это определяется смыслом запроса и означает, что господин Петров получил несколько двоек, ведь запрос наш как раз и состоял в выводе студентов, получивших во время сессии двойки. Для того чтобы строки результата не повторялись, нам необходимо включить в запрос ключевое слово DISTINCT , которое должно предшествовать полному списку результирующих столбцов.
При построении простых запросов мы можем использовать полный перечень операций сравнения:
= | равно |
<> или != | не равно |
>= | больше или равно |
> | больше |
AND (логическое И) и OR (логическое ИЛИ). Кроме того, мы можем использовать предикат between (между). Он записывается в следующем виде: Between n1 and n2, где n1 и n2 числовые границы. При написании запросов символьные константы должны заключаться в одинарные простые кавычки. Значения этих констант всегда регистрозависимы. Например, написание условия сравнения с названием дисциплины будет иметь следующий вид: Select Students.N_zach, Last_Name Также вы можете использовать в тексте запроса предикат сравнения Like «подобный». Этот предикат позволяет использовать некоторые шаблоны при отборе строк, в том числе следующие знаки подстановки:
Предикат Like допускает форму NOT Like , что означает «не подобно». Например, запрос «Вывести список студентов, у которых фамилии заканчиваются на «-ов»» будет выглядеть следующим образом: Select Students.N_zach, Last_Name А для того чтобы отобрать все коды специальностей, начинающиеся с числа 220, надо ввести следующий запрос: Select * Результат выполнения последнего запроса может выглядеть, например, следующим образом: Задания для самостоятельной работы
Предъявите все выполненные запросы преподавателю и получите зачет по результатам работы. Источник |