2011-11-29 74 views
1

我有三個表:如何在MySQL查詢中添加對數據的檢查?

  • $sTable =歌曲(songid,mp3link,藝術品,useruploadid等)的表
  • $sTable2 =項目表與鏈接到他們(專案編號,songid,項目歌曲命名等)
  • $sTable3 =歌曲評級(songid,用戶ID,等級)

所有這些數據被輸出到JSON陣列和在我applicati顯示在表中的一個表提供歌曲列表,並結合項目和評分數據。

我想要做的是檢查「登錄用戶」是否投票選定某首歌曲,以便我可以將「投票」類添加到返回數據的父元素。

我願意以最有效的最佳方式來做到這一點,我猜想會返回一個布爾值(1或0),其中1被投票,否則返回0。

我可以使用JavaScript應用類客戶端。

'logged in user id'被存儲在我的PHP腳本中作爲$ loggedin_ID,所以我需要簡單地檢查這個變量對$ sTable3列的'userid'給定的songid並返回一個新列(我會想象使用AS),如果該歌曲ID有匹配的條目,則結果爲1,如果沒有,則爲0。

我該如何去修改我的查詢來添加這個?

以上只是我的想法,可能確實有一個更好/更有效的方法。如果是這樣,請不要猶豫,提供您認爲可能是實現此功能的更好解決方案。

以下是我當前的查詢。謝謝。

$sQuery = "SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))." 
      FROM $sTable b 
      LEFT JOIN (
         SELECT COUNT(*) AS projects_count, a.songs_id 
         FROM $sTable2 a 
         GROUP BY a.songs_id 
        ) bb ON bb.songs_id = b.songsID 

      LEFT JOIN (
         SELECT AVG(rating) AS rating, COUNT(rating) AS ratings_count,c.songid 
         FROM $sTable3 c 
         GROUP BY c.songid 
        ) bbb ON bbb.songid = b.songsID 

回答

1

可能是你正在尋找的東西是這樣的:

select s.songid, s.userid, 
    case when exists 
    ( 
     select songid 
     from sTable3 
     where songid = $songid 
    ) Then 'Voted' 
    else 
    (
     'Not Voted' 
    ) 
    end 
    as 'Voted or Not' 
from sTable3 s 
where s.userid = $userid 
+0

感謝MGA,這看起來像正確的做法,但我無法將其集成到我的查詢沒有得到別名/語法錯誤。可能是由於我對MySQL的相對缺乏經驗。儘可能多的我不想問,你會介意更具體一點如何將它與我目前的查詢集成嗎?這對像我這樣的新手來說非常有幫助。 – gordyr

+0

稍微擺弄一下,我就到了那裏...並且在這個過程中學到了一兩件事。非常感謝MGA。你是個明星。 :-) – gordyr

+0

@gordyr,我真的很抱歉,但我實際上得不到,你想把它整合到什麼?您發佈到您的問題中的查詢我無法理解,但如果您對此有更詳細的瞭解,我將很樂意提供幫助。 –