Выберите из MySQL с отношениями - PullRequest
0 голосов
/ 29 июня 2011

Использование отношений в MySQL удобно, когда обновляется идентификатор или кто-то пытается удалить категорию.Но есть ли простой способ сделать запрос SELECT без использования JOIN?

JOIN прост в использовании, но я не могу использовать отношения при выполнении SELECT?Я могу выполнить JOIN без отношений!

Используются ли отношения только для того, чтобы я мог контролировать действия в поле идентификатора?

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Ограничения в базе данных (особенно внешние ключи) создаются для поддержания ссылочной целостности, чтобы предотвратить случайное удаление строк, на которые ссылаются другие строки.

Ограничения не предоставляют способа выполнения SELECT с автоматически соединенными таблицами. Итак - NO, вам нужно явно указать все JOIN s. И YES, JOIN не зависит от существующих ограничений: вы можете использовать его для любых таблиц, любых полей и писать любые условия, независимо от их ссылок друг на друга через отношения внешнего ключа.

1 голос
/ 29 июня 2011

Да, вы можете - через подзапрос.

SELECT *
FROM A
WHERE A.ID IN
   (SELECT B.Id FROM B)

- Где вы по сути делаете INNER JOIN в этом примере.* ссылочная целостность .В верхнем примере нет никакой гарантии, что B.Id должен иметь какое-либо отношение к A.Id.Если бы у вас были привязаны ключи базы данных друг к другу, вы могли бы гарантировать, что в таблице A должна существовать запись для строки в таблице B.

...