我有3张桌子
表1-用户:
_______________________
|uid | uname |
|______|______________|
| 1 | John99 |
| 2 | Steve12 |
| 3 | Smith_a |
| 4 | Robert.t |
| 5 | Williams.a |
|______|______________|
表2 - 名字:
_____________________
|eid | fname |
|______|_____________|
|1 | John |
|2 | Steve |
|3 | Williams |
|4 | Thomas |
|5 | James |
|______|_____________|
表3-姓氏
____________________
|eid | lname |
|______|____________|
|1 | Williams |
|2 | George |
|3 | Smith |
|4 | Robert |
|5 | Heart |
|___________________|
用户可以使用关键字“will”或“williams”进行搜索。我需要从上面所有3个表中搜索这个关键字,并显示相应关键字的uid,fname和lname。 例如:1。约翰威廉姆斯 威廉姆斯史密斯 5.James Heart
我和'%will%'一样尝试了联合,但结果中返回了重复项。有人可以帮我查询。
感谢。
答案 0 :(得分:6)
假设eid
是uid
的外键,那么这样的事情应该有效:
select u.uid, f.fname, l.lname
from users u
inner join firstname f on u.uid = f.eid
inner join lastname l on u.uid = l.eid
where f.fname like '%will%' or
l.lname like '%will%'
如果您还需要搜索uname字段,请使用另一个或语句将其添加到where条件。
结果:
UID FNAME LNAME
1 John Williams
3 Williams Smith
答案 1 :(得分:2)
SELECT uid, uname, fname, lname
FROM Users
INNER JOIN firstname
ON firstname.eid = users.uid
INNER JOIN lastname
ON lastname.eid = users.uid
WHERE uname LIKE '%will%'
OR fname LIKE '%will%'
OR lname LIKE '%will%'