Общие > Базы данных
MySQL: JOINы
volod:
Кто бы вот так внятно смог объяснить, как вообще работает JOIN и чем он принципиально отличается от запято и., LEFT JOIN.
Или ссылку киньте на кой-то ресурс. Вот только этой (http://dev.mysql.com/doc/mysql/ru/join.html) не нужно! Написано там классно, но чуток не то. Механизма, механизма тама нету...
volod:
Все, нашел.
http://citforum.novgorod.net/database/dblearn/dblearn05.shtml
Все свободны, всем спасибо:)
volod:
Нет. Все-таки нашел, но не то.
Таки не роздуплил, чем концептуально отличаются, ну хотя бы LEFT JOIN и INNER JOIN?..
:/
Phoinix:
volod
INNER JOIN - выбираются ТОЛЬКО те записи из обоих таблиц которые удовлетворяют условию.
LEFT JOIN - Выбираются ВСЕ записи из первой таблицы; из второй таблицывыбираются ТОЛЬКО те записи, которые удовлетворяют условию.
Вообще попробовал бы у себя поэкспериментировать, иначе этот "чупа-чупс" будем долго обсасывать...
volod:
********************************************************
mysql> explain SELECT
-> m.id_membership, m.code,
-> p.price
-> FROM memberships AS m
-> LEFT JOIN membership_programs AS p ON (p.id_membership = m.id_membership AND p.suspended = 0)
-> WHERE m.id_membership = 2 AND suspended = 0 AND site = "MS"
-> ;
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
| 1 | SIMPLE | m | const | PRIMARY,XAK1_memberships,XAK2_memberships,XFK1_memberships | PRIMARY | 4 | const | 1 | |
| 1 | SIMPLE | p | ref | XFK1_membership_programs,XIE1_membership_programs | XFK1_membership_programs | 4 | const | 2 | Using where |
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
2 rows in set (0.02 sec)
*****************************************************
********* и ПОЧТИ такой же но INNER *******************
*****************************************************
mysql> explain SELECT
-> m.id_membership, m.code,
-> p.price
-> FROM memberships AS m
-> INNER JOIN membership_programs AS p ON (p.id_membership = m.id_membership AND p.suspended = 0)
-> WHERE m.id_membership = 2 AND suspended = 0 AND site = "MS"
-> ;
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
| 1 | SIMPLE | m | const | PRIMARY,XAK1_memberships,XAK2_memberships,XFK1_memberships | PRIMARY | 4 | const | 1 | |
| 1 | SIMPLE | p | ref | XFK1_membership_programs,XIE1_membership_programs | XFK1_membership_programs | 4 | const | 2 | Using where |
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
2 rows in set (0.00 sec)
********************************************************
Найдите десять отличий! Или я плохо смотрю?..
Каррроче, експлейн на всю эту фигню что тама что тама выдет для таблицы memberships AS m (которая, обратите ка ваше внимание, стоит в начале произведения) тип связывания CONST. !
Ну это ж никак ни ALL...
Навигация
Перейти к полной версии