2016-10-13 143 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%'