Есть ли лучший подход к этому запросу MySQL? - PullRequest
0 голосов
/ 23 июня 2011

Следующий запрос находит директоров всех магазинов.Я думаю, что есть более простое решение, которое я предпочитаю использовать.Спасибо.

SELECT s.ShopID, (EmployeeName+' '+EmployeeSurname) AS FullName FROM shop AS s
JOIN WorksOn AS w ON s.ShopID = w.ShopID
JOIN employee AS e ON w.EmployeeID = e.EmployeeID
JOIN director AS d ON e.EmployeeID = d.EmployeeID

СТОЛЫ

employee : EmployeeID, EmployeeName,EmployeeSurname
shop: ShopID, Name, Address
WorksOn: EmployeeID, ShopID
director: EmployeeID

Ответы [ 2 ]

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

Есть несколько практических вопросов с этим запросом.Они не могут быть проблемы в зависимости от того, как вы используете его.Но я предполагаю, что в вашем случае вы не удовлетворены.Итак, вот мои проблемы:

  1. , если для магазина нет директора и т. Д., Вы не получите результатов для этого магазина.LEFT Присоединяйтесь.
  2. если есть 2 директора и 2 сотрудника, вы получите 4 записи.Таким образом, вы можете исправить это с помощью отдельных запросов или с помощью GROUP BY и GROUP_CONCAT или какой-либо другой статистической функции.
1 голос
/ 23 июня 2011

Это очень простой запрос. Согласно предоставленной вами информации, я не вижу ничего проще.

Пардон. Да, вы можете сделать это в 2 соединения:

SELECT 
    w.ShopID, (EmployeeName+' '+EmployeeSurname) AS FullName 
FROM 
    WorksOn AS w
    JOIN employee AS e ON w.EmployeeID = e.EmployeeID
    JOIN director AS d ON e.EmployeeID = d.EmployeeID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...