需要一些快速的帮助..我想我应该使用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'
谢谢!
答案 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
,但我倾向于将其置于其中,因为习惯可以帮助避免在编写更复杂的语句时出现错误。
JOIN
,INNER
,LEFT
或RIGHT
的 FULL
与INNER JOIN
相同(请参阅https://www.w3schools.com/sql/sql_join.asp )。
由于会员ID已在交易表中已知并使用,并且我们不会要求我们在此处参考有关该成员的任何其他详细信息,因此无需在“成员”表中进行链接。
如果没有GROUP BY
,SELECT
语句将在每次员工为成员打包交易时返回记录。这些细节每次都是一样的。使用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 ;