【问题标题】:Create a query to determine which sub_genres come from which regions创建查询以确定哪些 sub_genres 来自哪些区域
【发布时间】:2020-12-16 21:20:04
【问题描述】:
SELECT Sub_Genre.sgid, Sub_Genre.sgname, Region.rname 
FROM Sub_Genre AS S, Region AS R
JOIN Band_Styles AS bSty ON bSty.sgname=S.sgname
JOIN Band_Origins AS bOri ON bOri.bname=bSty.bname
JOIN Country AS C ON C.cname=bOri.cname
JOIN Region ON R.rname=C.rname
ORDER BY S.sgid;

我正在尝试创建一个查询以确定哪些 sub_genres 来自哪些地区。 我不断收到错误代码 1054。“字段列表”中的未知列“Sub_Genre.sgid”

【问题讨论】:

  • 你应该在第一行选择S,而不是Sub_Genre,同样选择R,而不是Region

标签: mysql sql inner-join


【解决方案1】:

不要混合显式和隐式连接。始终使用标准的显式连接。

表region 在查询中出现两次,第一次出现在带有别名的隐式连接中,然后出现在没有别名的标准连接中。这很可能不是您想要的。

select 子句中的列以整个表名为前缀,而from 子句中的表为别名:不支持。

这将是表达逻辑的一种更简洁的方式:

select s.sgid, s.sgname, r.rname 
from sub_genre      s
join band_styles    bsty on bsty.sgname = s.sgname
join band_origins   bori on bori.bname = bsty.bname
join country        c     on c.cname = bori.cname
join region         r     on r.rname = c.rname
order by s.sgid;

这解决了语法问题。这是否给出了正确的结果是另一回事:你没有分享你正在使用的结构和数据,所以我不能说。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    相关资源
    最近更新 更多