我正在编写一个MySQL数据库,但不幸的是我被指示不使用外键并且只假设外键。这使得该项目至少可以说是非常尴尬。但是,我试图找到问题的解决方案。我有一个实体表;该表称为“Sale”,“Sale”保存属性/外键音乐ID或“MID”(INT)。 “MID”是另一个名为“Music”的表的主键,其属性为“Artist”(String)和“Title”(String),分别代表各种歌曲的标题和艺术家。我的问题我将如何创建一个将进入销售的查询/功能提取每行的“MID”值,以便整个“MID”列然后转到“音乐”表并每次添加“艺术家”出现提取的“MID”列的“和”标题。尽管没有实际的外键,我必须编写查询,好像有,所以我试图避免将提取的“MID”内容存储到一个单独的表中。我能够编写一个应该提取“MID”的语句我正在努力弄清楚如何在其周围包含一个语句,这会增加引用“Artist”和“Title”的总次数。哦BTW不同的“MID”值可以有相同的“艺术家”或“标题”,所以我必须考虑到这一点。
SELECT SELECT MID FROM Sale
WHERE SDate<= CURDATE();
此代码从当前日期之前的任何日期提取MID值。(这是MID必须从最早记录日期到当前日期的另一个规定,这是因为销售中的某些日期供将来参考,IE将来会有日期。
答案 0 :(得分:0)
使用JOIN:
SELECT Artist, Title, IFNULL(COUNT(s.MID), 0) SalesCount
FROM Music AS m
LEFT JOIN Sale AS s ON m.ID = s.MID AND SDate <= CURDATE()
GROUP BY Artist, Title
如果这不是您所需要的,请为您提供包含样本数据的sqlfiddle,并将结果发布到您尝试提问的位置。你的描述很混乱。