当前位置: 首页 > 面试题库 >

搜索多个表(SQL)

袁致远
2023-03-14
问题内容

我需要能够使用一个简单的搜索来搜索数据库的SQL查询。这是我的表格现在的样子:

Table artists
--------------
id
name

Table albums
-------------
id
artistID
name

Table songs
------------
id
albumID
name

我将如何去做呢?这是我尝试过的一些SQL查询,但是我的问题是它返回了大量数据。例如,如果我搜索像Snoop
Dogg这样的艺术家,即使没有专辑名称,它也会为他所拥有的每张专辑和每首歌曲返回一行。

SELECT * FROM artist,album,songs WHERE artist.name LIKE '%snoop%' OR albums.name LIKE '%snoop%' OR songs.name LIKE '%snoop%';

编辑:

这是一个示例数据库;

artists
-----------
1 | Snoop Dogg
2 | Linkin Park

albums
--------
1 | artist=1 | Boom
2 | artist=2 | ThisIsIt

songs
--------
1 | album=1 | First
2 | album=2 | Second Linkin
3 | album=2 | Third
4 | album=1 | Fourth

因此,我想搜索“ snoop”以仅返回艺术家“ Snoop Dogg”。但随后进行了类似“ Linkin”的搜索,以返回歌手和歌曲。


问题答案:

该查询将检索匹配的艺术家,歌曲和专辑。第一列提供有关数据来源的线索,第二列是ID,最后一列是名称。

select 'Artists' OriginatingTable, id, name
  from artists
 where name like '%snoop%'
union all
select 'Albums', id, name
  from albums
 where name like '%snoop%'
union all
select 'Songs', id, name
  from songs
 where name like '%snoop%'


 类似资料:
  • 问题内容: 我的数据库中有三个表: 这些表中的每个表都有两个字段,分别称为“内容”和“标题”。我希望能够在我的sql语句中使用“赞”来查看“ messages.content”,“ messages.title”,“ topics.content”,“ topics.title”,“ comments.content”和“ comments”。标题”使用关键字。 到目前为止,我的查询仅能从一张表中

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 问题内容: 如何进行mysql查询以立即检查更多表?我的意思是,类似: 你可以这样吗? 我想要做的是向用户显示他从整个网站发布的所有帖子。 问题答案: 在您提供的查询中,它使用完整的外部联接。改用联合选择。

  • 问题内容: 我第一次使用Postgresql,并且试图在我的网站中创建一个搜索引擎。我有这张桌子: 然后我为表的每个字段创建了一个索引(这是正确的方法吗?或者我可以为所有字段创建一个索引?): 现在,如果我想在每个索引中搜索一个单词,SQL查询是什么? 我尝试了这个,它的工作原理: 是否存在更好的方法来做到这一点?我可以搜索多个吗?我的一个朋友提出了一个解决方案,但这是针对MySQL数据库的: P

  • 问题内容: 我从来没有真正听到过关于这个问题的直接答案,我只需要FULLTEXT搜索包含多个单词“ Firstname Lastname”的几列 但是,如果我在此处输入多个单词,它将无法运行查询。 问题答案: 如果要进行精确搜索:

  • 问题内容: 我曾经使用过django,haystack和elasticsearch。 我的search_index.py: 搜索表格: 模板: 看 ` 我得到所有的价值,那里有“老板”和“挡泥板” 当您在搜索框中输入“ boss fender”时,我没有结果。从搜索表单中,我只能得到一个单词的结果,例如“老板”。如何使搜索多个单词的能力? 问题答案: 这个月我陷入了这个问题。 为了执行正确的查询,