我试图想到一个我可以在MySQL中编写的SQL语句,我可以在其中获得专辑中包含的所有曲目。我设置它的方式是Album_id,它是我的专辑表的主键,以外键的形式链接在轨道表内。这样,每个曲目行都链接到专辑表中的专辑。
我将在下面的表格布局中进一步详细说明:
tbl_Albums
正如您所看到的,我将Album_id作为主键,并且它已自动增加,因此当输入新行时,ID将自动更新。
class A {
public element;
public test;
public doSomething;
constructor(id) {
if (id) {
if (window === this as any) {
return new A(id);//<-Error in typescript
}
this.element = document.getElementById(id);
this.test = function () {
console.log("testing"); return this;
};
this.doSomething = function () {
console.log("doing something"); return this;
};
return this;
}
}
}
let result = ((A as any)("test") as A).doSomething();
result = new A("test").doSomething();
tbl_Tracks
在曲目表中,我使用album_id设置了一个外键,因此我将曲目链接到特定的专辑。
CREATE TABLE `tbl_Albums` (
`Album_id` int(11) NOT NULL auto_increment,
`Album_Name` varchar(32) NOT NULL,
`Number_Of_Tracks` int(11) NOT NULL,
`Genre` varchar(32) NOT NULL,
`Artist_id` int(11) NOT NULL,
PRIMARY KEY (`Album_id`),
KEY `Artist_id` (`Artist_id`),
CONSTRAINT `tbl_Albums_ibfk_2`
FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`))
我已经正确地链接了表格,但是我试图想出一个MySQL语句,它可以让我显示链接到特定专辑的所有曲目,并且到目前为止都是空的。然后我尝试将代码实现为php表单,供用户用来列出曲目
非常感谢任何帮助。
答案 0 :(得分:1)
SELECT tbl_Albums.Album_id, tbl_Albums.Album_Name, tbl_Tracks.Track_id, tbl_Tracks.Track_Name, tbl_Tracks.Album_id
FROM tbl_Albums
INNER JOIN tbl_Tracks ON tbl_Albums.Album_id = tbl_Tracks.Album_id WHERE
`tbl_Albums`.`Album_Name`='Your album name'
ORDER BY
`tbl_Tracks`.`Track_id`;
答案 1 :(得分:0)
SELECT
`t2`.*
FROM
`tbl_Albums` `t1`
INNER JOIN
`tbl_Tracks` `t2`
ON
`t2`.`Album_id`=`t1`.`Album_id`
WHERE
`t1`.`Album_Name`='Name of Your album'
ORDER BY
`t2`.`Track_id`;
答案 2 :(得分:0)
我不知道我是否理解你的问题是正确的,但是一个简单的选择应该可以解决这个问题吗?
如果您知道相册ID,例如5:
SELECT * FROM `tbl_Tracks` WHERE `Album_id` = 5;
如果你知道专辑名称:
SELECT `t`.* FROM `tbl_Tracks` AS `t`
LEFT JOIN `tbl_Albums` AS `a` ON `a`.`Album_id` = `t`.`Album_id`
WHERE `a`.`Album_Name` = 'Thriller';