我是(My)SQL的新手,需要一些帮助:在数据库中,我有3个表,一个例子:
购买:
id model price ------------ 1 1 2500 2 2 14000
制造者:
id name ----------- 1 Opel 2 Crysler
型号:
id name manufacturer ------------------------- 1 Astra 1 2 C 300 2
在表purchases中,model是一个外键,它链接到model.id。在模型中,“制造商”是一个外键,它与“制造商id”相链接。
我的目标是一个如下图所示的表格:
id model price manufacturer ------------------------------ 1 Astra 2500 Opel 2 C300 14000 Chrysler
我知道如何在表购买中加入以获取型号的名称。不幸的是,我不知道如何获取制造商?
我的SQL-查询:
SELECT * FROM purchases JOIN model ON purchases.model = model.id
连接表的正确方法是使用< code>JOIN(和相关的)关键字。简单的规则:永远不要在< code>FROM子句中使用逗号。始终使用显式< code>JOIN语法:
select m.name as model, p.price, mf.name as manufacturer
from purchases p JOIN
model m
on p.model = m.id
manufacturer mf
on m.manufacturer = mf.id;
尝试使用'内连接':
select m.name as model, p.price, mf.name as manufacturer
from purchases p
inner join
model m on p.model = m.id
inner join
manufacturer mf on m.manufacturer = mf.id;
您可以使用“位置”连接表。
试试看:
select m.name as model, p.price, mf.name as manufacturer
from purchases p, manufacturer mf, model m
where m.manufacturer = mf.id
and p.model = m.id
但用“where”不是很好,被认为是一种过时的方式。
有一个类似的问题,也许可以帮助你澄清这个问题:SQL内连接3表?
问题内容: 我用多个(包括一个)编写了这个SQL请求。 它给了我预期的结果 。 但是,“ Id就像此请求的Linq等效项一样,将其放在应用程序的数据访问层中。 我尝试了类似的东西: 我试图适应这个问题,但我无法弄清楚。我对分组子请求的内部迷失了。 谁能解释我哪里错了? 专家提示:如果有人可以用lambda表达式编写等效项,则可获赠积分 问题答案: 要将SQL转换为LINQ查询理解: 将子选择转换为
问题内容: 大多数SQL方言都接受以下两个查询: 现在显然当您需要外部联接时,需要第二种语法。但是,在进行内部联接时,为什么我应该更喜欢第二种语法(反之亦然)? 问题答案: 在大多数现代数据库中,不赞成使用仅列出表并使用子句指定连接条件的旧语法。 这不仅是为了展示,当您在同一查询中同时使用INNER和OUTER联接时,旧语法可能会变得模棱两可。 让我给你举个例子。 假设您的系统中有3个表: 每个表
问题内容: 我有三个表:R,S和P。 表R通过外键与S连接;有 应该 是S中至少一个的记录,所以我可以加入: 如果S中没有记录,那么我没有行,那很好。 然后表S与P联接,其中记录为P可能存在,也可能不存在,并与S联接。 所以我做 如果我想将第二个JOIN绑定到S而不是R,例如我可以使用括号,该怎么办: 还是这已经是R,S和P之间笛卡尔积的自然行为? 问题答案: 各种外部联接和普通联接都在相同的优先
问题内容: 谁能告诉我如何编写查询并如上所述获取结果,谢谢!我试过加入,左右加入。一切都没有结果。 问题答案: 您可以在这两个表之间写左外部联接最好的理解方法是检查下图 查询您的要求 阅读有关 代码项目的 原始文章将对您有很大帮助:SQL Joins的可视表示 。 在以下位置找到原始版本:MySQL中的JOIN和OUTER JOIN之间的区别 。
问题内容: 我在SQL中有此查询,并且希望它使用Entity Framework 在LINQ中实现它,但是如何应用左外部联接的多个表? 问题答案: 这是使用LINQ实现左外部联接的方式。您应该使用GroupJoin(语法): 该查询联接了三个表。您可以以相同的方式加入其余表。
问题内容: 我有4个不同的表要加入。这些表的结构如下: 从表A开始,我了解如何使用b联接表a和c,因为b具有这些表的主键。我也希望能够在TableA上加入表TableD。下面是我的SQL语句,该语句首先连接表A和B,然后将其连接到C: 当我尝试添加另一个联接以包括D时,出现“ TableD”未知的错误: 问题答案: 您想要更多类似这样的东西: 在您的示例中,您实际上并未包含。您要做的就是像以前一样