这个MySQL查询有更好的方法吗?

时间:2011-06-23 16:08:16

标签: mysql sql

以下查询查找所有商店的总监。我认为有一个更简单的解决方案,我更愿意使用。谢谢。

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

TABLES

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

2 个答案:

答案 0 :(得分:1)

这是一个非常简单的查询。根据您提供的信息,我看不出更简单的事情。

赦免。是的,你可以在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

答案 1 :(得分:1)

这个查询有一些实际问题。根据您的使用方式,它们可能不是问题。但是,我猜你的情况不满意。所以这是我的问题:

  1. 如果商店没有导演等,那么该商店就没有结果。 LEFT JOIN吧。
  2. 如果有2名董事和2名员工,您将获得4条记录。因此,您可以通过单独查询或GROUP BY和GROUP_CONCAT或其他一些聚合函数来解决这个问题。