Вивчення мови запитів, які поширюються на дві і більше таблиці. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вивчення мови запитів, які поширюються на дві і більше таблиці.



ТЕОРЕТИЧНІ ВІДОМОСТІ

Багатотабличний запит призначений для вибірки даних з двох або більше таблиць і включення цих даних в один результуючий набір.

Якщо є зв’язок між таблицями, можливе неявне і явне одержання результату. Явне звертання до вихідних таблиць в командах SELECT підтримується оператором JOIN з наступним синтаксисом:

table_reference, table_reference

| table_reference [CROSS] JOIN table_reference

| table_reference INNER JOIN table_reference join_condition

| table_reference STRAIGHT_JOIN table_reference

| table_reference LEFT [OUTER] JOIN table_reference join_condition

| table_reference LEFT [OUTER] JOIN table_reference

| table_reference NATURAL [LEFT [OUTER]] JOIN table_reference

{OJ table_reference LEFT OUTER JOIN table_reference ON conditional_expr}

| table_reference RIGHT [OUTER] JOIN table_reference join_condition

| table_reference RIGHT [OUTER] JOIN table_reference

| table_reference NATURAL [RIGHT [OUTER]] JOIN table_reference

 

де table_reference визначено, як:

table_name [[AS] alias] [[USE INDEX (key_list)] | [IGNORE INDEX (key_list)] | [FORCE INDEX (key_list)]]

і join_condition визначено, як:

ON conditional_expr |USING (column_list).

У більшості випадків не слід указувати в частині ON які б то не було умови, що накладають обмеження на рядки в наборі результатів (з цього правила є винятки). Якщо необхідно вказати, які рядки повинні бути присутніми в результаті, слід зробити це в виразі WHERE.

При необхідності з'єднання не двох, а кількох таблиць, операція з'єднання застосовується кілька разів (послідовно).

Якщо таблиці не мають зв’язку, то використовується UNION з синтаксисом:

SELECT...UNION [ALL | DISTINCT] SELECT...[UNION [ALL | DISTINCT] SELECT...]

 

4.3 ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ

1. Виконати запити, що повертають всі рядки і всі стовпчики кожної із створених в лабораторній роботі №2 таблиць.

2. Виконати запити, вказані у варіанті (кожний пункт завдання реалізується одним оператором SELECT).

3. Виконати запити з UNION.

4. Перевірити правильність роботи запитів.

Варіант 1

1. Вивести алфавітний список деталей, які мають добрий збут.

2. Вивести впорядкований список бригад, вказуючи кількість деталей, якщо нічого не виготовлено, то 0 (зовнішнє з’єднання).

3. Вивести для бригади статистику по кількості деталей кожного типу, що були використані замовниками з цього району (використати всі 3 таблиці).

4. Вивести список бригад, що виконали деталей більше, ніж середній показник.

5. Вивести список бригад, що виготовили більше всіх деталей визначеного типу.

Варіант 2

1. Вивести алфавітний список вкладників, що мають строкові вклади.

2. Вивести алфавітний список читачів, вказуючи кількість виданих грошей, якщо нічого не видано, то 0 (зовнішнє з’єднання).

3. Вивести статистику по кількості вкладів кожного типу, що були використані.

4. Вивести список вкладників, що вклали в 2 рази більше грошей, ніж середній показник.

5. Вивести список прізвищ вкладників, що виграли по виграшному вкладу, і суму виграшу.

 

Варіант 3

1. Вивести алфавітний список моделей, які мали збут.

2. Вивести алфавітний список моделей, вказуючи кількість збутих моделей, якщо нічого не продано, то 0 (зовнішнє з’єднання).

3. Вивести статистику по використанню матеріалів кожного типу, з яких пошито збуті моделі.

5. Вивести список моделей, що потребують матеріалів більше, ніж середній показник.

5. Вивести список матеріалів, з яких моделі не купляли.

Варіант 4

1. Вивести список екіпажів рейсу №1.

2. Вивести алфавітний список пунктів прибуття і загальну кількість рейсів (сума рейсів=рейси однієї компанії*кількість компаній).

3. Вивести назви всіх погодних чинників, за яких рейси не відбуваються.

4. Вивести кількість екіпажів на кожен рейс (якщо немає, то 0, використати зовнішнє з’єднання).

5. Вивести назви пунктів прибуття останніх рейсів, вказавши дату.

Варіант 5

1. Вивести алфавітні списки прізвищ та ініціалів (перших букв імен і по- батькові з крапкою) абонентів, вказати номери відділів зв’язку.

2. Вивести прізвища абонентів, що мали переговори з іноземцями.

3. Вивести номера відділень зв’язку, вказати кількість абонентів в кожному з них (якщо абонентів немає, то 0, використати зовнішнє з’єднання).

4. Вивести список прізвищ абонентів, що наговорили більше ніж на 50 гр.

5. Вивести номера відділень зв’язку та суми наданих ними послуг.

Варіант 6

1. Вивести алфавітні списки прізвищ та ініціалів (перших букв імен і по- батькові з крапкою) передплатників, вказати суми, на яку передплачено.

2. Вивести прізвища передплатників, що передплатили “Черкаський край“ на 21 відділені пошти.

3. Вивести номера відділень пошти і кількість передплатників в кожному з них (якщо передплатників немає, то 0, використати зовнішнє з’єднання).

4. Вивести список прізвищ передплатників, що передплатили більш ніж на 100 гр.

5. Вивести номера відділень і прізвища кращих передплатників.

Варіант 7

1. Вивести назви предметів і ступінь їх забезпечення в лабораторії №3.

2. Вивести список предметів з кількістю лабораторій, що їх забезпечують, з середнім ступенем.

3. Вивести список лабораторій, що забезпечують мову Паскаль (використовувати 3 таблиці).

4. Вивести список лабораторій, вказати кількість предметів, що вони забезпечують і середній бал (якщо лабораторія не забезпечує жодного предмету, то у результаті повинен бути 0, використовувати зовнішнє з’єднання).

5. Вивести список назв предметів і назви (№) кращих лабораторій для цих предметів (якщо їх декілька, то достатньо одну лабораторію).

Варіант 8

1. Вивести алфавітний список вантажів, що доставлені за замовленнями.

2. Вивести алфавітний список замовників, вказати сумарну вагу доставлених вантажів, якщо нічого не доставлено, то 0 (зовнішнє з’єднання).

3. Вивести статистику за кількістю вантажів кожного типу, що були доставлені замовникам (використати всі 3 таблиці).

4. Вивести список замовників, що отримали в 2 рази більше вантажів, ніж середній показник.

5. Вивести список замовників, що очікують замовлення більше місяця.

Варіант 9

1. Вивести алфавітний список будматеріалів, що доставлені і не витрачені.

2. Вивести алфавітний список будматеріалів, вказати сумарну вагу доставлених будматеріалів, якщо нічого не доставлено, то 0 (зовнішнє з’єднання).

3. Вивести статистику за кількістю будматеріалів кожного типу, що були доставлені і використані (використати всі 3 таблиці).

4. Вивести список будматеріалів, що використано в 3 рази більше, ніж середній показник.

5. Вивести список будматеріалів, що використані за місяць.

Варіант 10

1. Вивести алфавітний список доярок та сумарну кількість фуражу, що вони видали.

2. Вивести алфавітний список корів, вказати сумарну вагу наданого фуражу, якщо нічого не надано, то 0 (зовнішнє з’єднання).

3. Вивести статистику по надоях від корів з урахуванням режиму, якості фуражу (використати всі 3 таблиці).

4. Вивести список корів, що одержали в 1,5 рази більше фуражу, ніж середній показник.

5. Вивести сумарний надій.

 

Варіант 11

1. Вивести алфавітний список робітників, що є у списках.

2. Вивести алфавітний список робітників, вказати сумарну суму коштів, одержаних за місяць, якщо нічого не одержано, то 0 (зовнішнє з’єднання).

3. Вивести статистику по кількості кожного виду коштів (аванс, премія, тощо), що були надані робітникам, які відробили без лікарняних (використати всі 3 таблиці).

4. Вивести список робітників, що одержали в 2 рази більше, ніж середній показник.

5. Вивести список робітників, що хворіли більше тижня.

Варіант 12

1. Вивести алфавітний список держав, що мають ресурси вугілля.

2. Вивести алфавітний список держав, вказати ВВП, демографічний стан, сумарну вагу промислових викидів, якщо щось не відомо, то 0 (зовнішнє з’єднання).

3. Вивести статистику по кількості ресурсів кожного типу, що були використані підприємствами (використати всі 3 таблиці).

4. Вивести список ресурсів, які використані в 2 рази більше, ніж середній показник.

5. Вивести список держав, що мають економічну кризу.

Варіант 13

1. Вивести алфавітний список абітурієнтів, що бажають навчатись на комп’ютерному факультеті.

2. Вивести алфавітний список абітурієнтів, вказати сумарний бал за всі іспити, якщо не приймав участі в іспитах, то 0 (зовнішнє з’єднання).

3. Вивести статистику по кількості абітурієнтів кожного факультету, що були присутні на іспитах (використати всі 3 таблиці).

4. Вивести список факультетів, що мають конкурс в 1,5 рази більше, ніж середній показник.

5. Вивести список абітурієнтів, що подали заяви за два тижні до початку іспитів.

Варіант 14

1. Вивести алфавітний список шахістів, що мають незавершені партії.

2. Вивести алфавітний список шахістів-гросмейстерів, вказати сумарну кількість одержаних гонорарів, якщо нічого не одержано, то 0 (зовнішнє з’єднання).

3. Вивести статистику по кількості шахістів кожного класу, що одержали гонорар (використати всі 3 таблиці).

4. Вивести список шахістів, що одержали в 2 рази більше перемог, ніж середній показник.

5. Вивести список шахістів, що не програли жодного разу.

 

Варіант 15

1. Вивести алфавітний список товарів, що придбали покупці.

2. Вивести алфавітний список покупців, вказати сумарну ціну покупок, якщо нічого не придбано, то 0 (зовнішнє з’єднання).

3. Надати відомості про кількість покупців кожного типу товару, які звертались до продавця №4 (використати всі 3 таблиці).

1. Вивести список продавців, які продали товарів на суму в 2 рази більше, ніж середній показник.

5. Вивести список товарів, що не покупають більше місяця.

Варіант 16

1. Вивести список рибного улову за місяць.

2. Вивести відсортований список бригад, вказати сумарну вагу їх уловів, якщо нічого не виловлено, то 0 (зовнішнє з’єднання).

3. Навести дані за ресурсами вилову та кількості риби кожного типу, що була спіймана (використати всі 3 таблиці).

4. Вивести список бригад, які за тиждень виловили в 1,3 рази більше, ніж середній показник.

5. Вивести список риби, що є в наявності.

Варіант 17

1. Вивести назви мов програмування і ступінь володіння для службовця №2.

2. Вивести список мов програмування з кількістю співробітників, які володіють мовою з середнім рівнем.

3. Вивести список співробітників, які володіють PSQL (використати 3 таблиці).

4. Вивести список співробітників і вказати кількість мов, якими вони володіють і середній бал (якщо співробітник не володіє жодною мовою, то у результаті повинен бути 0, використовувати зовнішнє з’єднання).

5. Вивести список назв мов програмування і прізвищ експертів для цих мов (якщо їх декілька, то достатньо одного).

Варіант 18

1. Вивести алфавітний список учбових видань, виданих читачам.

2. Вивести алфавітний список читачів, вказуючи кількість виданої літератури, якщо нічого не видано, то 0 (зовнішнє з’єднання).

3. Вивести для Канівського району статистику по кількості книг кожного типу, що були використані читачем з цього району (використати всі 3 таблиці).

4. Вивести список читачів, що прочитали в 2 рази більше книг, ніж середній показник.

5. Вивести список прізвищ злісних боржників (тих, хто не повертає 2 і більше книг більше місяця).

Варіант 19

2. Вивести алфавітні списки прізвищ та ініціалів (перших букв імен і по- батькові з крапкою) старост груп, вказати номери груп.

3. Вивести прізвища студентів-заочників з фаху «Програмна інженерія».

4. Вивести номера груп заочників, вказати кількість студентів в кожній з них (якщо студентів немає, то 0, використати зовнішнє з’єднання).

5. Вивести список прізвищ студентів-заочників із середнім балом вище за 3.5.

6. Вивести номера груп і прізвища кращих студентів цих груп.

Варіант 20

1. Вивести список прізвищ та ініціалів (перших букв імен і по-батькові з крапкою) авторів книги в порядку номерів в списку.

2. Вивести список назв книг, написаних Петровим.

3. Для кожного автора вивести максимальну і мінімальну ціну його книги.

4. Вивести для кожної книги кількість її авторів, якщо книга не має авторів, то 0 (зовнішнє з’єднання).

5. Вивести список книг, які більше ніж в 2 рази дорожчі за середню ціну на книгу їх типу.

Варіант 21

1. Вивести списки викладачів, які ведуть предмет – вказати назви предметів.

2. Вивести списки викладачів, які ведуть більше ніж 2 предмети.

3. Вивести списки професорів, які читають предмети для 1 курсу.

4. Вивести список прізвищ викладачів, які читають більше 2-х різних предметів із зазначенням кількості предметів.

5. Вивести список предметів із зазначенням кількості викладачів, які їх читають (якщо таких немає, то 0, використовувати зовнішнє з’єднання).

Варіант 22

1. Вивести алфавітний список предметів, що вивчаються групою 09, по типам.

2. Вивести середню складність предметів, що вивчаються для кожної групи.

3. Вивести список предметів із кількістю студентів, що їх вивчає (якщо предмет не вивчається жодною з груп, то 0, використати зовнішнє з’єднання).

4. Вивести список предметів (без повторень), які вивчаються заочниками програмістами.

5. Вивести список предметів, складність яких на 2 бали вище за середню.

Варіант 23

1. Вивести алфавітний список покупців товару №1.

2. Вивести алфавітний список покупців з загальними сумами замовлення (сума замовлення=ціна за одиницю*кількість одиниць).

3. Вивести назви всіх державних підприємств, що купляли алкоголь.

4. Вивести кількість замовлень на кожний товар (якщо немає, то 0, використати зовнішнє з’єднання).

5. Вивести назву фірми і відомості про її останнє замовлення: дата, кількість, назва товару.

Варіант 24

Вивести алфавітний список прізвищ студентів, що живуть в гуртожитку №1.

Вивести список кімнат в гуртожитку №1, в яких є вільні місця.

Вивести список кімнат, в яких жив Петров.

Вивести список прізвищ студентів, які за рік переїжджали більше одного разу.

Варіант 25

1. Вивести алфавітні списки прізвищ та ініціалів (перших букв імен і по- батькові з крапкою) студентів, що займались 26.06.2013 в 508 аудиторії.

2. Вивести список комп’ютерів, на яких займався Петров за останній тиждень.

3. Вивести номери непрацюючих комп’ютерів і прізвища студентів, які на них займалися останніми.

4. Вивести список студентів, які зараз працюють за комп’ютером (з незаповненим полем часу закінчення роботи).

5. Вивести список незайнятих комп’ютерів.

Варіант 26

1. Вивести алфавітні списки прізвищ і ініціалів хворих із діагнозом №1.

2. Визначити середній вік хворих, що мають діагноз №2.

3. Вивести списки назв діагнозів із зазначенням середнього віку хворих.

4. Для кожного хворого вивести кількість його діагнозів (якщо немає, то 0, використати зовнішнє з’єднання).

5. Вивести останній по часу діагноз для кожного хворого.

Варіант 27

1. Вивести алфавітні списки прізвищ і ініціалів лікарів, що приймають хворих у вівторок.

2. Визначити середній вік хворих, що звернулись до невропатолога.

3. Вивести списки кабінетів, де приймають терапевти.

4. Для кожного лікаря вивести кількість його пацієнтів (якщо немає, то 0, використати зовнішнє з’єднання).

5. Вивести кількість годин прийому Петровим за минулий тиждень.

Варіант 28

1. Вивести алфавітні списки прізвищ та ініціалів співробітників, які проходили перепідготовку у середині року.

2. Вивести список курсів, що прослухав Петров за направленням № 6 відділу кадрів.

3. Вивести номери курсів і прізвища співробітників, які їх прослухали останніми.

4. Вивести список співробітників, які зараз навчаються (поле закінчення перепідготовки не заповнене).

5. Вивести список співробітників, які будуть навчатися у березні.

 

 

4.4 МЕТОДИКА ВИКОНАННЯ

Методика виконання наведена у лабораторній роботі №3. Приклади запитів і результатів їх роботи.

SELECT users.userid,name, ordid FROM users, orders

where users.userid=orders.userid;

SELECT * FROM users

join orders on

users.userid=orders.userid;

 

4.5. ЗМІСТ ЗВІТУ

Розділ “Результати роботи” повинен містити скрипти і результати запитів.

4.6. КОНТРОЛЬНІ ПИТАННЯ

1. Розкажіть про роботу запиту Вашої роботи чи роботи іншого студента.

2. Як побудувати запит до двох таблиць?

3. Наведіть приклад запиту до декількох таблиць.

4. Синтаксис JOIN.

ЛАБОРАТОРНА РОБОТА №5

СТВОРЕННЯ ПРЕДСТАВЛЕНЬ

МЕТА РОБОТИ



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 165; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.243.2.41 (0.093 с.)