Изучаем sql



Pdf көрінісі
бет185/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   181   182   183   184   185   186   187   188   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

Перекрестные соединения
В главе 5 была представлена концепция декартова произведения, ко
торое, в сущности, является результатом соединения нескольких таб
лиц без указания какихлибо условий соединения. Декартово произве
дение довольно часто используется в результате случайности (т. е. ко
гда разработчики просто забывают добавить в блок 
from
условие соеди
нения), но на самом деле не так уж широко распространено. Однако
если 
действительно 
требуется получить декартово произведение двух
таблиц, должно быть задано 
перекрестное соединение
:
mysql> 
SELECT pt.name, p.product_cd, p.name
> FROM product p CROSS JOIN product_type pt;
++++
| name | product_cd | name |
++++
| Customer Accounts | AUT | auto loan |
| Customer Accounts | BUS | business line of credit |
| Customer Accounts | CD | certificate of deposit |


206
Глава 10. И снова соединения
| Customer Accounts | CHK | checking account |
| Customer Accounts | MM | money market account |
| Customer Accounts | MRT | home mortgage |
| Customer Accounts | SAV | savings account |
| Customer Accounts | SBL | small business loan |
| Insurance Offerings | AUT | auto loan |
| Insurance Offerings | BUS | business line of credit |
| Insurance Offerings | CD | certificate of deposit |
| Insurance Offerings | CHK | checking account |
| Insurance Offerings | MM | money market account |
| Insurance Offerings | MRT | home mortgage |
| Insurance Offerings | SAV | savings account |
| Insurance Offerings | SBL | small business loan |
| Individual and Business Loans | AUT | auto loan |
| Individual and Business Loans | BUS | business line of credit |
| Individual and Business Loans | CD | certificate of deposit |
| Individual and Business Loans | CHK | checking account |
| Individual and Business Loans | MM | money market account |
| Individual and Business Loans | MRT | home mortgage |
| Individual and Business Loans | SAV | savings account |
| Individual and Business Loans | SBL | small business loan |
++++
24 rows in set (0.00 sec)
Этот запрос формирует декартово произведение таблиц 
product
и 
prod
uct_type
. В результате получаем 24 строки (8 строк 
product
умножают
ся на 3 строки 
product_type
). Но теперь, когда известно, что такое пере
крестное соединение и как оно задается, надо определиться с тем, за
чем оно используется. Большинство книг по SQL описывают, что такое
перекрестное соединение, и затем говорят, что используется оно ред
ко. Но мне бы хотелось поделиться с читателем ситуациями, в кото
рых я нахожу перекрестное соединение довольно полезным.
В главе 9 обсуждалось, как использовать подзапросы для создания таб
лиц. Используемый пример показывал, как построить таблицу, вклю
чающую три строки, которая могла быть соединена с другими таблица
ми. Вот таблица из того примера:
mysql> 


Достарыңызбен бөлісу:
1   ...   181   182   183   184   185   186   187   188   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет