Опции за обединяване на данни
Обединяване на данни и недействителност на записа
Понякога ще имате таблица, където в поле липсват някои записи. Ето пример за списък на служителите, където някои записи не посочват отдела, към който принадлежи служителят:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Employees.DepartmentCode AS Department FROM Employees;
Това ще доведе до:
Ако създадете заявка за вътрешно присъединяване на две таблици, които имат връзка и в някои записи на дъщерната таблица липсват някои стойности в колоната за външен ключ, заявката ще произведе само записите, които имат стойност. Ето един пример:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Departments.DepartmentName AS Department FROM Departments INNER JOIN Employees ON Departments.DepartmentCode = Employees.DepartmentCode;
Това ще доведе до:
Забележете, че заявката произвежда по-малко записи. Както се случва, машините за бази данни не харесват нулеви записи, особено в споделени полета, полета, които участват във връзки. За да сте сигурни, че всички записи на дъщерна таблица са създадени от заявка, създайте стойност по подразбиране за записи, чиито стойности липсват. Ако връзката използва просто цяло число, създайте запис със стойността 0. Ако връзката използва низ, можете да създадете запис със стойност „N/A“. Ако записите се обработват от компютър, можете да създадете запис с обща/случайна стойност като 00000 или нещо подобно.
Практическо обучение:справяне с обединяването на данни и недействителността на записите
- Стартирайте Microsoft Access
- От ресурсите, които придружават тези уроци, отворете базата данни Altair Realtors3
- На лентата щракнете върху Създаване и щракнете върху Дизайн на заявка
- В диалоговия прозорец Показване на таблица щракнете двукратно върху Свойства и щракнете върху Затвори
- В списъка Properties щракнете двукратно върху PropertyNumber, City и State
- Превключете заявката към изглед на лист с данни:
- Обърнете внимание на броя на записите:48.
Превключете заявката към изглед на дизайн - Щракнете с десния бутон върху празна област в горната част на прозореца и щракнете върху Покажи таблица
- В диалоговия прозорец Показване на таблица щракнете двукратно върху PropertyTypes и щракнете върху Close
- В списъка PropertyTypes щракнете двукратно върху PropertyType
- Превключете заявката към изглед на лист с данни
- Обърнете внимание на броя на записите този път:44.
Покажете SQL изгледа на заявката и променете кода му, както следва:SELECT Properties.PropertyNumber, Properties.City, Properties.State, Conditions.Condition FROM Properties INNER JOIN Conditions ON Properties.Condition = Conditions.Condition;
- Превключете заявката към изглед на лист с данни
- Обърнете внимание на броя на записите:38.
Затворете заявката, без да я записвате - В навигационния екран щракнете двукратно върху формуляра PropertyTypes
- Създайте нов запис, както следва:
PropertyType Описание Неизвестно Типът имот не е наличен или не е ясен. Илюстрации - Затворете таблицата PropertyTypes
- В навигационния екран щракнете двукратно върху формуляра за условия
- Създайте нов запис, както следва:
PropertyType Описание Неизвестно Текущото състояние или външен вид (вътрешен и/или екстериор) на имота не е проверен, не е оценен или не е ясно известен. - Затворете таблицата с условия
- В навигационния екран щракнете с десния бутон върху таблицата Properties и щракнете върху Design View
- В горната част на прозореца щракнете върху PropertyType
- В долната част щракнете върху Стойност по подразбиране и въведете Неизвестно
- В горната част на прозореца щракнете върху Условие
- В долната част щракнете върху Стойност по подразбиране и въведете Неизвестно
- Запазете таблицата и я превключете към изглед на лист с данни
- В колоната PropertyType за всяка празна клетка изберете Unknown
- В колоната Условие за всяка празна клетка изберете Неизвестно
- Забележете, че има стойност по подразбиране както за PropertyType, така и за колоните Condition
- Като зададете само посочените стойности, създайте нови записи, както следва:
Свойство № Тип собственост Град Щат Пощенски код Спални Бани Завършено мазе Вътрешен гараж Състояние Пазарна стойност 476005 Single Family Hanover PA 17331 3 2,50 Проверено 425790 152466 Martinsburg WV 1 1.00 135670 427048 Condominium Alexandria VA 3 2.00 Нуждае се от ремонт 622845 297427 Matinsburg Отличен 729336 Harbour VA 3 5 05 05 2011 Проверено Добра форма 515885 - Затворете таблицата
- На лентата щракнете върху Създаване и щракнете върху Дизайн на заявка
- В диалоговия прозорец Показване на таблица щракнете двукратно върху Свойства и щракнете върху Затвори
- В списъка Properties щракнете двукратно върху PropertyNumber, City и State
- Превключете заявката към изглед на лист с данни
- Обърнете внимание на броя на записите:51.
Превключете заявката към изглед на дизайн - Щракнете с десния бутон върху празна област в горната част на прозореца и щракнете върху Покажи таблица
- В диалоговия прозорец Показване на таблица щракнете двукратно върху PropertyTypes и щракнете върху Close
- В списъка PropertyTypes плъзнете PropertyType и го пуснете върху град в долната страна
- В списъка с свойства щракнете двукратно върху Спални и бани
- Превключете заявката към изглед на лист с данни
- Забележете броя на записите този път:51.
Затворете заявката, без да я записвате - Отворете базата данни Lambda Square Apartments1, създадена и използвана по-рано
- На лентата щракнете върху Създаване и щракнете върху Дизайн на заявка
- В диалоговия прозорец Показване на таблицата щракнете двукратно върху Плащания и щракнете върху Затвори
- В списъка с плащания щракнете двукратно върху ReceiptNumber, PaymentDate, ProcessedBy, RegistrationNumber и PaymentAmount
- Превключете заявката към изглед на лист с данни
- Обърнете внимание на броя на записите:63.
Превключете заявката към изглед на дизайн - Щракнете с десния бутон върху празна област в прозореца и щракнете върху Покажи таблица...
- В диалоговия прозорец Показване на таблица щракнете двукратно върху Служители и щракнете върху Затвори
- Плъзнете EmployeeNumber и го пуснете върху ProcessedBy
- В долната страна на прозореца заменете ProcessedBy с
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Превключете заявката към изглед на лист с данни
- Обърнете внимание на броя на записите:46.
Затворете заявката, без да я записвате - В навигационния панел щракнете двукратно върху таблицата Служители и създайте нов запис, както следва (това е за транзакции, извършени в банката, като например наемател, който депозира пари от наем директно в банката):
Номер на служителя Име Фамилия Заглавие 00000 Автоматична обработка на електронна транзакция - Затворете таблицата за служители
- В навигационния екран щракнете с десния бутон върху таблицата Плащания и щракнете върху Изглед на дизайн
- В горната част на прозореца щракнете върху Обработено от
- В долната част щракнете върху Стойност по подразбиране и въведете „00000“
- Запазете и затворете таблицата
- Отворете таблицата за плащания
- В колоната ProcessedBy във всяка празна клетка въведете 00000
- Затворете таблицата за плащания
- На лентата щракнете върху Създаване и щракнете върху Дизайн на заявка
- В диалоговия прозорец Показване на таблица щракнете двукратно върху Плащания и служители
- Щракнете върху Close
- Плъзнете EmployeeNumber и го пуснете върху ProcessedBy
- В списъка с плащания щракнете двукратно върху ReceiptNumber и PaymentDate
- Натиснете Tab и въведете
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- В списъка с плащания щракнете двукратно върху RegistrationNumber и PaymentAmount
- Превключете заявката към изглед на лист с данни
- Обърнете внимание на броя на записите:63.
Затворете заявката, без да я записвате
Присъединяване на повече от две маси
Досега нашите изявления за присъединяване включват само две таблици. Всъщност можете да използвате повече таблици от това. Основната формула за свързване на три таблици е:
SELECT field-name(s) FROM first-table first-join-type second-table ON condition1 second-join-type third-table ON condition2
Започвате израза, като свързвате първата с втората таблици, което означава, че и двете таблици трябва да споделят колона в тип връзка първичен ключ-външен ключ. По същия начин можете да създадете второто присъединяване. Разбира се, втората и третата таблица трябва да имат обща колона. В повечето случаи трябва да има колона, която и трите таблици споделят. През повечето време връзката започва с колона с първичен ключ от родителската таблица. След това тази колона се представя като външен ключ в другите две таблици.
Практическо обучение:присъединяване към повече от две маси
- На лентата щракнете върху Създаване и щракнете върху Дизайн на формуляр
- В листа със свойства щракнете върху раздела Всички.
Щракнете върху Източник на запис и щракнете върху бутона с многоточия - В Показване на таблицата щракнете двукратно върху Служители, регистрации и апартаменти
- Щракнете върху Close
- Плъзнете EmployeeNumber от списъка на служителите и го пуснете в ProcessedBy в списъка с регистрации
- Плъзнете ApartmentCode от списъка с апартаменти и го пуснете на PropNbr в списъка с регистрации
- В списъка с регистрации щракнете двукратно върху RegistrationID и RegistrationDate
- Натиснете Tab и въведете
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- В списъка с регистрации щракнете двукратно върху Име, Фамилия, Семейно състояние и NumberOfChildren.
- Натиснете Tab и напишете:
Apartment: "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month"
- Показване на SQL изглед на заявката:
SELECT Registrations.RegistrationID AS [Regist #], Registrations.RegistrationDate AS [Regist Date], [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")" AS Employee, Registrations.FirstName, Registrations.LastName, Registrations.MaritalSituation AS Status, Registrations.NumberOfChildren AS Children, "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month" AS Apartment FROM Apartments INNER JOIN (Employees INNER JOIN Registrations ON Employees.EmployeeNumber = Registrations.ProcessedBy) ON Apartments.ApartmentCode = Registrations.PropNbr;
- Затворете конструктора на заявки
- Когато бъдете попитани дали искате да запазите промените, щракнете върху Да
- Запазете формуляра като Разпределение на наеми
- Щракнете двукратно върху бутона в пресечната точка на линийките
- В листа със свойства променете следните характеристики:
Надпис:Апартаменти Lambda Square - Разпределение на наем
Стойност по подразбиране:Непрекъснат формуляр
Автоматичен център:Да
Бутони за навигация:Не - На лентата щракнете върху Дизайн
- В секцията Инструменти щракнете върху Добавяне на съществуващи полета
- В списъка с полета щракнете върху Апартамент, натиснете и задръжте Shift, щракнете върху Регистриране # и освободете Shift
- Плъзнете селекцията във формуляра
- На лентата щракнете върху Подреждане и щракнете върху Таблица
- Плъзнете селекцията наляво
- Натиснете Ctrl + A, за да изберете всички контроли
- На лентата щракнете върху Премахване на оформление
- Завършете дизайна на формуляра. Ето един пример:
- Запазете и затворете формуляра
Обединяване на данни и анализ на записи
Сортиране на записи
В обединенията на данни, които създадохме досега, ние разгледахме всички записи и оставихме на машината на базата данни да ги изброи, като използва само правилата за обединения, вградени в SQL. За да направите такъв списък по-ограничителен, можете да приложите някои условия, чрез които да изолирате някои записи. Можете да създадете визуално филтрите в изгледа за проектиране на заявка или в подобен прозорец. Можете също да създадете филтър в SQL. Както беше направено в предишни уроци, за да включите критерий в SELECT изявление, можете да създадете WHERE клауза.
Практическо обучение:Въвеждане на обединения и анализ на данни
- Отворете използваната по-рано база данни Monson University1
- За да стартирате заявка, на лентата щракнете върху Създаване и щракнете върху Дизайн на заявка
- В диалоговия прозорец Показване на таблица щракнете върху Затвори
- Щракнете с десния бутон върху горната страна на прозореца и щракнете върху SQL изглед
- Променете изявлението, както следва:
SELECT EmployeeNumber AS [Employee #], FirstName AS [First Name], LastName AS [Last Name], Title, DepartmentName AS Department FROM Employees, Departments WHERE Employees.DepartmentCode = Departments.DepartmentCode ORDER BY LastName;
- Визуализирайте резултатите в изгледа на листа с данни
- Ако е необходимо, на лентата щракнете върху Начало.
Променете следните характеристики:
Име на шрифта:Californian FB (ако нямате този шрифт, изберете Times New Roman)
Цвят на шрифта:Син, Акцент 1, По-светъл 80% (Цветове на темата:5-та колона, 2-ри ред)
Цвят на фона:Още цветове:Червен:195, Зелен:95, Син:15
Линии на мрежата:хоризонтални
Цвят на алтернативен ред:Още цветове:Червен:128, Зелен:0, Син:0 - Затворете заявката, без да я запазвате
- Затворете Microsoft Access