我有2个表:users和prov_spec_search。我正在寻找符合以下条件的SQL查询以联接这些表:
users Table:
id | first_name | last_name | activ_status
-------------------------------------------
6 | sudha | dravid | 1
7 | Gokul | menon | 1
13 | sujith | nair | 1
-------------------------------------------
prov_spec_search表
id | inv_user_id | drafter_id | activ_status
-------------------------------------------
1 | 13 | 7 | 1
2 | 13 | 6 | 1
-------------------------------------------
预期结果是:
Need to join users and prov_spec_search tables with 2 conditions where
prov_spec_search.inv_user_id = users.id = Name
AND
prov_spec_search.drafter_id = users.id = Drafter name
结果:
Name | Drafter Name | Active
------------------------------------------
sujit nair | Gokul menon | active
sujit nair | sudha dravid | active
我已经开始使用此查询:
SELECT
prov_spec_search.id,
prov_spec_search.inv_user_id,
prov_spec_search.drafter_id,
prov_spec_search.activ_status,
users.first_name,
users.last_name,
users.activ_status AS activ_status1
FROM prov_spec_search
INNER JOIN users ON prov_spec_search.inv_user_id = users.id AND prov_spec_search.drafter_id = users.id
WHERE (prov_spec_search.activ_status ='1')
答案 0 :(得分:2)
您需要从prov_spec_search
表连接到users
表,两次:
SELECT
pss.id,
pss.inv_user_id,
pss.drafter_id,
pss.activ_status,
CONCAT(u1.first_name, ' ', u1.last_name) AS Name,
CONCAT(u2.first_name, ' ', u2.last_name) AS Drafter_Name
FROM prov_spec_search pss
LEFT JOIN users u1
ON pss.inv_user_id = u1.id
LEFT JOIN users u2
ON pss.drafter_id = u2.id
WHERE
pss.activ_status = 1;
-- you may filter user and drafter names here if desired
答案 1 :(得分:1)
您需要两次连接users
表:一次用于Name
,一次用于Drafter Name
:
SELECT CONCAT(n.first_name, ' ', n.last_name) as Name,
CONCAT(d.first_name, ' ', d.last_name) as Drafter_Name,
p.activ_status as Active
FROM prov_spec_search p
JOIN user n ON p.inv_user_id = n.id
JOIN user d ON p.drafter_id = d.id
WHERE p.activ_status = 1
请注意,我假设您从其他地方获得了状态Active = 1
,但我相信您可以毫无问题地将其添加到上面的查询中。