所以我有两个表工作和联系人,我试图创建一个显示作业位置和分配技术的作业的行。现在联系人可以是技术人员或工作地点我想保持这种方式,但如果需要可以改变。这样做的好方法是什么。
添加第二个显示location_label
的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_id,contacts.location_label,contacts.tech_label
contacts.location_label将是作业的位置(jobs.location_id) contacts.tech_label将是工作分配给的技术(jobs.tech_id)
我发现其他一些线程有类似的问题,但似乎都没有正常工作 感谢
答案 0 :(得分:0)
您必须两次加入联系人表格,一个用于技术,一个用于位置。
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