2016-10-13 146 views
0

我有我的数据库2个表(直到现在),一个用于存储艺术家的名字和另一个存储歌曲(名称和歌词)不同领域的结果,但我需要使用一个SELECT到内搜索艺术家名称,歌曲名称和歌词的一次,但我得到的部分结果和大量的1292个错误。搜索与LIKE

宋表(歌曲)

song_id 
artist_id 
song_name VARCHAR 
song_lyric TEXT 

艺术家表(艺术家)

artist_id 
artist_name 

我的第一个SQL想法是LEFT JOIN这样的:

SELECT s.song_name AS SONG, s.song_id AS ID FROM songs AS s 
    LEFT JOIN artists AS a ON s.song_id = a.artist_id 
    WHERE s.song_name OR s.song_lyric OR a.artist_name LIKE '%some value%' 

SELECT给出了一个结果,如果我用一个艺术家的名字(如果我有一个独特的名字),但如果我尝试像“太阳”,“儿子”一些正则表达式我有一个空的结果集。

任何帮助将是惠康

+0

'WHERE s.song_name LIKE '%某个值%' 或s.song_lyric LIKE '%某个值%' 或a.artist_name LIKE '%某个值%'' –

+1

什么是你期望的输出?你为什么在'LEFT JOIN'中使用's.song_id = a.artist_id'? – Ponnarasu

+0

我要像一个隐藏字段(拉撒路)的ID创建另一个搜索,并根据歌手名,歌曲名或者一些歌词的歌曲名。 – douglascast

回答

0
SELECT s.song_name AS SONG, s.song_id AS ID FROM songs AS s 
LEFT JOIN artists AS a ON s.artist_id = a.artist_id 
WHERE s.song_name LIKE '%some value%' OR s.song_lyric LIKE '%some value%' 
OR a.artist_name LIKE '%some value%' 
0

尝试。

SELECT s.song_name AS SONG, s.song_id AS ID FROM songs AS s LEFT JOIN artists 
    AS a ON s.artist_id = a.artist_id WHERE s.song_name LIKE '%some value%' OR 
    s.song_lyric LIKE '%some value%' OR a.artist_name LIKE '%some value%'