Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-查询输出合并数据_Mysql_Sql_Database_Merge_Output - Fatal编程技术网

MySQL-查询输出合并数据

MySQL-查询输出合并数据,mysql,sql,database,merge,output,Mysql,Sql,Database,Merge,Output,因此,我有一个查询,用于查找和显示所有工作ID为SA_MAN和SA_REP的员工的部门、城市和国家名称,如下所示: SELECT DEPARTMENT_NAME, CITY, COUNTRY_NAME FROM OEHR_EMPLOYEES INNER JOIN OEHR_DEPARTMENTS ON OEHR_EMPLOYEES.DEPARTMENT_ID=OEHR_DEPARTMENTS.DEPARTMENT_ID INNER JOIN OEHR_LOCATIONS ON OEHR_DEPA

因此,我有一个查询,用于查找和显示所有工作ID为SA_MAN和SA_REP的员工的部门、城市和国家名称,如下所示:

SELECT DEPARTMENT_NAME, CITY, COUNTRY_NAME
FROM OEHR_EMPLOYEES
INNER JOIN OEHR_DEPARTMENTS ON OEHR_EMPLOYEES.DEPARTMENT_ID=OEHR_DEPARTMENTS.DEPARTMENT_ID
INNER JOIN OEHR_LOCATIONS ON OEHR_DEPARTMENTS.LOCATION_ID=OEHR_LOCATIONS.LOCATION_ID
INNER JOIN OEHR_COUNTRIES ON OEHR_LOCATIONS.COUNTRY_ID=OEHR_COUNTRIES.COUNTRY_ID
WHERE JOB_ID LIKE '%SA_MAN%' OR JOB_ID LIKE '%SA_REP%'
ORDER BY DEPARTMENT_NAME DESC
/
但是,所有员工都居住在一个部门中,因此对于具有SA_MAN或SA_REP的JOB_ID列中的每个员工,输出都是相同的。如图所示:

DEPARTMENT_NAME                COUNTRY_NAME                             CITY
------------------------------ ---------------------------------------- ----------------------------
Sales                          United Kingdom                           Oxford
Sales                          United Kingdom                           Oxford
Sales                          United Kingdom                           Oxford

这将持续34行。简单地说,我如何使查询中的输出停止不必要的重复显示相同的数据,而只显示一行。如果查询被更改,并且仍然执行相同的操作,则我希望此功能也能正常工作,以便每个部门只显示一行包含指定员工的信息。

FWIW,我发现这更易于阅读:

SELECT d.department_name
     , l.city
     , c.country_name
  FROM oehr_employees e
  JOIN oehr_departments d
    ON d.department_id = e.department_id
  JOIN oehr_locations l
    ON l.location_id = d.location_id
  JOIN oehr_countries c
    ON c.country_id = l.country_id
 WHERE job_id LIKE '%sa_man%' 
    OR job_id LIKE '%sa_rep%'
 ORDER 
    BY department_name DESC

考虑修改您的工作id定义。这是您设计中的一个弱点。

使用别名并相应地对列名进行适当限定是一个非常好的习惯。它使查询更容易阅读-明智地使用大写锁定键也是如此。尝试使用:选择distinc并查看感谢SELECT Distinct完成了任务,您是否想在下面输入以便我可以将其标记为答案?可以,但不是我的设计!这是一个作业,所以我不能改变实际的数据库。感谢您提供的有关如何更好地写出查询的提示。