0

我正在尝试从 2 个表中获取与部分成员名称匹配的 member_id、member_name、member_code 和成员类型。

我的表格结构

导师表
-tutor_id
-tutor_name
-tutor_code

研究所表
-institute_id
-institute_name
-institute_code

当我从导师名或研究所名中给出部分名称时,查询需要识别这是一名导师或研究所。然后需要选择结果。

我试过这样的东西。但没有运气。

SELECT  
    COALESCE(t.tutor_id, i.institute_id) AS member_id,
    COALESCE(t.tutor_name, i.institute_name) AS member_name,
    COALESCE(t.tutor_code, i.institute_code) AS member_code
FROM (tutors AS t OR institutes AS i)
WHERE (t.tutor_name LIKE '%jaya%' OR i.institute_name LIKE '%jaya%');

希望有人指出我正确的方向。

谢谢你。

4

1 回答 1

2

最好的办法是使用 UNION:

SELECT t.tutor_id member_id, t.tutor_name member_name, t.tutor_code member_code, 'tutor' as type
FROM tutors t
WHERE t.tutor_name LIKE '%jaya%'
UNION 
SELECT t.institute_id, t.institute_name, t.institute_code, 'institute' as type
FROM institute i
WHERE i.institute_name LIKE '%jaya%'

但是,这可能不会返回您要查找的内容。没有共同的领域,就无法确定是导师还是研究所……

假设如果存在导师,您可能可以应用这样的技巧,不要显示学院:

SELECT t.tutor_id member_id, t.tutor_name member_name, t.tutor_code member_code, 'tutor' as type
FROM tutors t
WHERE t.tutor_name LIKE '%jaya%'
UNION 
SELECT t.institute_id, t.institute_name, t.institute_code, 'institute' as type
FROM institute i
WHERE i.institute_name LIKE '%jaya%' 
   AND 0 = (SELECT COUNT(*) FROM tutors WHERE tutor_name LIKE '%jaya%')

但这似乎非常奇怪......

于 2013-02-12T04:58:54.750 回答