我正在尝试从2个表中获取member_id,member_name,member_code和成员类型与成员名称的一部分匹配。
我的表结构
导师表
-tutor_id
-tutor_name
-tutor_code学院表
-institute_id
-institute_name
-institute_code
当我从tutor_name或institute_name提供名称的一部分时,查询需要认识到这是一个导师或研究所。然后需要选择结果。
我试过这样的事情。但没有运气。
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%');
希望有人指出我正确的方向。
谢谢。
答案 0 :(得分: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%')
但这看起来很奇怪......