SQL*Plus查询:使用聚合进行表联接
我需要两个查询这些表,我创建的,我有困难做它,任何帮助将不胜感激 对于所有化身,生成一个列表,显示化身名称、当前持有的武器总数以及当前持有的所有武器的总成本。除了这三个主要部分之外,我不想再显示更多的信息,所以我需要从表2和表3中获取信息 对于任何给定的用户电子邮件,即在运行时输入的电子邮件,按出生日期的相反顺序列出拥有的化身名称以及武器,包括该化身持有的武器名称、范围和成本 任何帮助都将不胜感激。我正在使用SQL*Plus。这些表不是很有效,所以任何改进都会受到欢迎,但主要是我需要这些查询的帮助SQL*Plus查询:使用聚合进行表联接,sql,oracle,Sql,Oracle,我需要两个查询这些表,我创建的,我有困难做它,任何帮助将不胜感激 对于所有化身,生成一个列表,显示化身名称、当前持有的武器总数以及当前持有的所有武器的总成本。除了这三个主要部分之外,我不想再显示更多的信息,所以我需要从表2和表3中获取信息 对于任何给定的用户电子邮件,即在运行时输入的电子邮件,按出生日期的相反顺序列出拥有的化身名称以及武器,包括该化身持有的武器名称、范围和成本 任何帮助都将不胜感激。我正在使用SQL*Plus。这些表不是很有效,所以任何改进都会受到欢迎,但主要是我需要这些查询的帮
CREATE TABLE users
()
CREATE TABLE avatars
()
CREATE TABLE weapons
()
如果您的查询依赖于电子邮件的唯一性,那么您应该在其上有一个唯一的密钥。
您的武器表上似乎没有范围列,但您在查询2的要求中暗示了这一点。无论如何,我已经包括了w.range。
在头像中,没有头像id可能应该被命名为头像id或只是id,而在武器中,武器id应该被命名为头像id。
您应该学习SQL教程。这里有一个:。
你试过写点什么吗?所以我不明白你的意思,如果你是说我试过了吗?是的,我有,但我只能从两个表或一个表中获取所有信息。我对此很陌生。我想说的是,你应该分享你尝试过的东西以及为什么它不起作用。否则,你看起来像是在要求别人为你写代码,这在这里是不受欢迎的。从头像中选择*从活动=1的用户中选择id,从电子邮件中选择id,如“E%”,我会使用类似的方式,但这列出了两个表中的所有列。不确定如何仅获取specificsjustreplace*和所需的列名。非常基本的SQL代码。我在“w”上得到了无效的标识符。“fk\u wp”。但我知道你想做什么。然而,我不知道为什么这个错误会持续下去。在第一次查询操作中,使用了fk_wp而不是武器id。修复了它,让我知道它是否有效。得到了一个新的错误,第2行-不是一组表达式。啊,是的,这种错误一直困扰着我;DBMS应该足够聪明,知道a.name对于a.no_wp_id的每个组都是唯一的。需要一个技巧来修复,我喜欢使用max。修复它,再试一次。
select
max(a.name),
count(1),
sum(w.cost)
from
avatars a
inner join weapons w on w.weapon_id=a.no_wp_id
group by
a.no_wp_id
;
select
a.name,
w.weapon_name,
w.range,
w.cost
from
users u
inner join avatars a on a.user_id=u.id
inner join weapons w on w.weapon_id=a.no_wp_id
where
u.email='given@email.com'
order by
a.dateOfBirth desc
;