根据两个表选择记录

时间:2016-07-20 15:44:33

标签: mysql

假设我有三个表,比特率,歌曲和文件。

表比特率

$("input").bind("keydown", function(event) {

if (event.which === 13) {
    $(this).next("input").focus();
} 
});

表 - 歌

 -------------------------------
|  bitrate_id  | bitrate_name   |
---------------------------------
|      1       |    128kbps     |
---------------------------------
|      2       |    320kbps     |
---------------------------------

表格文件

 -------------------------------
|  song_id     |   song_title   |
---------------------------------
|      1       |    My song 1   |
---------------------------------
|      2       |    My song 2   |
---------------------------------

我有一个应用程序,用户创建歌曲并在特定歌曲下上传不同的比特率轨道。假设我有一首名为“我的歌曲1 ”的歌曲。当用户为此歌曲添加不同的比特率轨道时,用户必须从“

”生成的选择框中选择比特率
  

SELECT * FROM bitrate

如果用户将 128kbps 曲目添加到“我的歌曲1 ”,然后当他将另一个tarck上传到同一首歌时他无法选择“ 128kbps “再次比特。意思是我想检查一首歌是否已经有128kbps比特率的歌曲然后当我查询比特率表时,只显示除“ 128kbps ”之外的其他比特率。如何实现这一目标?感谢

上传表格

enter image description here

1 个答案:

答案 0 :(得分:1)

埃洛,伙计。您可以尝试使用条件 NOT IN 选择当前歌曲未使用的比特率。

SELECT * FROM `bitrate` AS `b` WHERE b.bitrate_id NOT IN 
    (SELECT `bitrate_id` FROM `file` 
         WHERE `file_id` = {{here comes the actual file ID}}
    );

在上面的查询中,我们尝试选择其 bitrate_id 不存在于表文件

详细了解 NOT IN 条件here