0

だから、仕事と連絡先の2つのテーブルがあり、仕事の場所と割り当てられた技術を示す仕事を示す行を作成しようとしています。現在、連絡先は技術者または勤務地にすることができます。そのままにしておきたいのですが、必要に応じて変更できます。これを行う良い方法は何ですか。

location_label を表示する 2 番目の 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 になる行出力を探しています

contact.location_label は、仕事の場所 (jobs.location_id)、contacts.tech_label は、仕事が割り当てられている技術者 (jobs.tech_id) です。

同様の問題を抱えている他のスレッドをいくつか見つけましたが、どれも正しく機能していないようです ありがとう

4

1 に答える 1

0

連絡先テーブルに 2 回参加する必要があります。1 つは技術用、もう 1 つは場所用です。

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
于 2012-07-13T02:55:14.123 に答える