从单独的表中查询查询中的两列的名称而不是ID

时间:2014-02-08 12:05:55

标签: mysql database

我当前的查询:

SELECT CONCAT(emp.firstName, ' ', emp.lastName), gear.gearCata 
FROM gear_search as gear 
LEFT OUTER JOIN employee as emp ON gear.PrimarySalesid = emp.salesid 
WHERE gear.CompanyName = 'rty';

我想要的是列出主要和次要销售人员的名字和姓氏而不是他们的ID的结果,并且辅助必须显示空结果的NULL,以便我可以看到他们排队的位置。

So like this
PrimarySales Name | GearCatagory | Secondary Name
Bill Jones           Climbing         NULL
Terry Anderson       Running          Bill Jones

... and so on

基本上, gear_search 表中没有销售人员姓名,只是每个交易的主要和次要销售ID。我必须使用employee表来获取它们的实际名称。

我知道我可以这样做:

SELECT CONCAT(emp.firstName, ' ', emp.lastName), gear.gearCata, gear.SecondarySalesid
FROM gear_search as gear 
LEFT OUTER JOIN employee as emp ON gear.PrimarySalesid = emp.salesid 
WHERE gear.CompanyName = 'rty';

但这只会显示他们的Secondarysalesid而不是他们的名字。

我已尝试再次在Secondarysalesid上加入员工并再次使用CONCAT,但它不能正确排列主要版本。我需要查看哪些交易只有主要交易,然后是(主要和次要)

任何建议都会非常感激。

2 个答案:

答案 0 :(得分:1)

再次加入员工:

SELECT DISTINCT
  CONCAT(emp.firstName, ' ', emp.lastName) PrimaryName,
  gear.gearCata,
  CONCAT(emp2.firstName, ' ', emp2.lastName) SecondaryName
FROM gear_search as gear
LEFT JOIN employee emp ON gear.PrimarySalesid = emp.salesid 
LEFT JOIN employee emp2 ON gear.SecondarySalesid = emp2.salesid 
WHERE gear.CompanyName = 'rty'

答案 1 :(得分:0)

建议你两次加入“employee”到“gear_search”,就像这样(请原谅旧式语法不使用LEFT JOIN,这是我更熟悉的内容:

SELECT CONCAT(emp1.firstName,'',emp1.lastName), gear.gearCata, CONCAT(emp2.​​firstName,'',emp2.​​lastName) 从gear_search作为齿轮,      员工为emp1,      员工为emp2 哪里 gear.CompanyName ='rty' 和  gear.PrimarySalesid = emp1.salesid  和  gear.SecondarySalesid = emp2.​​salesid

虽然你的帖子说你尝试过这样的事情,但是你不清楚你是否在查询中有“雇员”两次。所以我可能会在这里通过你自己的手表告诉你时间。