Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.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
同一表中具有多个where的MYSQL查询_Mysql_Union_Left Join_Where Clause_Multiple Tables - Fatal编程技术网

同一表中具有多个where的MYSQL查询

同一表中具有多个where的MYSQL查询,mysql,union,left-join,where-clause,multiple-tables,Mysql,Union,Left Join,Where Clause,Multiple Tables,所以我有两个表格,工作和联系人,我试着做一行显示工作,显示工作地点和分配的技术。现在的联系人可以是技术人员或工作地点,我希望保持这种方式,但如果需要可以更改。做这件事的好方法是什么 添加显示位置标签的第二个where子句的正确方法是什么 SELECT jobs.job_id, contacts.location_label, contacts.tech_label FROM jobs LEFT JOIN contacts ON jobs.tech_id = contacts.c

所以我有两个表格,工作和联系人,我试着做一行显示工作,显示工作地点和分配的技术。现在的联系人可以是技术人员或工作地点,我希望保持这种方式,但如果需要可以更改。做这件事的好方法是什么

添加显示位置标签的第二个where子句的正确方法是什么

SELECT 
  jobs.job_id, contacts.location_label, contacts.tech_label
FROM 
  jobs
LEFT JOIN 
  contacts ON jobs.tech_id = contacts.contact_id
工作表

Field   Type    Null    Key     Default     Extra
job_id  int(6)  NO  PRI     NULL    auto_increment   
location_id     int(5)  NO      NULL         
tech_id     int(5)  YES         0        
creator_id  varchar(9)  NO      NULL     
creation    timestamp   NO      CURRENT_TIMESTAMP    
service_requested   varchar(400)    YES         NULL     
service_performed   varchar(400)    YES         NULL     
status_id   int(5)  NO      NULL     
联系人表

Field   Type    Null    Key     Default     Extra
contact_id  int(9)  NO  PRI     NULL    auto_increment    
location_label  varchar(30)     YES         NULL     
address     varchar(20)     YES         NULL     
city    varchar(15)     YES         NULL     
state   varchar(2)  YES         NULL     
zip     int(10)     YES         NULL     
phone   int(11)     NO      NULL         
user_level  int(2)  YES         NULL     
first_name  varchar(10)     YES         NULL     
last_name   varchar(10)     YES         NULL             
type_tech   tinyint(1)  YES         NULL     
type_location   tinyint(1)  YES         NULL     
type_admin  tinyint(1)  YES         NULL     
tech_label  varchar(20)     YES         NULL     
creator_id  int(9)  YES         NULL     
我正在寻找行输出 jobs.job\u id、contacts.location\u标签、contacts.tech\u标签

contacts.location\u标签将是作业的位置(jobs.location\u id) contacts.tech_标签将是分配给该作业的技术人员(jobs.tech_id)

我发现其他一些线程也有类似的问题,但它们似乎都不能正常工作
谢谢

您必须加入联系人表两次,一次用于技术,一次用于位置

SELECT J.job_id, 
       L.location_label, 
       T.tech_label
  FROM jobs J
  LEFT JOIN contacts T ON J.tech_id = T.contact_id
  LEFT JOIN contacts L ON J.location_id = L.contact_id

欢迎来到StackOverflow。我很不清楚你想实现什么。。。您可以发布每个表中的一些示例数据以及您从这些数据中寻找的输出吗?显示您的示例表和所需的输出,以便我们提供帮助