使用SQL中多个表的数据

时间:2017-03-30 03:20:02

标签: mysql sql sql-server

需要一些快速的帮助..我想我应该使用INNER JOIN,但我不太确定。

List  the employee ID and the full name of the employee who sold or packaged the  
transactions placed by customer Benjamin Jones. Each employee should only show up 
once in your results

employeeID,第一个和最后一个在EMPLOYEES表中

benjamin jones的memberID是101,在MEMBERS表中

memberID和transactionID以及soldorpackagedby位于TRANSACTIONS表中

这是我必须开始的,但不知道如何完成它。

 SELECT EmployeeID, First, Last
 FROM Employees
 WHERE MemberID = '101'

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试 -

SELECT employees.EmployeeID,
       employees.First,
       employees.Last
FROM employees
JOIN transactions ON employees.EmployeeID = transactions.SoldOrPackagedBy
WHERE transactions.memberID = 101
GROUP BY employees.EmployeeID;

因为您在此SQL语句中使用来自多个表的数据,所以您需要指定重复字段名称(例如EmployeeID)来自哪个表,因此employees.EmployeeID。在employee.First之前可能不会要求Last,但我倾向于将其置于其中,因为习惯可以帮助避免在编写更复杂的语句时出现错误。

前面没有JOININNERLEFTRIGHT

FULLINNER JOIN相同(请参阅https://www.w3schools.com/sql/sql_join.asp )。

由于会员ID已在交易表中已知并使用,并且我们不会要求我们在此处参考有关该成员的任何其他详细信息,因此无需在“成员”表中进行链接。

如果没有GROUP BYSELECT语句将在每次员工为成员打包交易时返回记录。这些细节每次都是一样的。使用GROUP BY会将此减少为这些详细信息的一个实例。

如果您有任何问题或意见,请随时发表评论。

答案 1 :(得分:-1)

试试这个

SELECT employees.EmployeeID,
       employees.First,
       employees.Last
FROM employees
JOIN transactions ON employees.EmployeeID = transactions.EmployeeID
WHERE transactions.memberID = 101
GROUP BY employees.EmployeeID, employees.First,  employees.Last ;