我有一个名为Products的表,看起来像这样:
var myTotal = myFrame.Sum();
正如您所看到的,prd_id prd_name prd_ref_id prd_status
----------------------------------------------------
1 Prod A 0 Available
2 Prod X 3 Out of Stock
3 Prod G 1 Available
引用了同一个表,但ID不同。如果没有参考,则为prd_ref_id
。
我想写一个查询,比如我有0
然后查询应该返回:
prd_id as 2
我想我需要以某种方式使用自联接,但它一直给我语法错误。
prd_id prd_name prd_ref_name prd_status
2 Prod A Prod 3 Out of Stock
任何帮助表示赞赏!!!
答案 0 :(得分:2)
在语音中称为自联接,因为您正在将表连接到自身。但是在语法方面,加入另一个表没有区别,因此您可以像往常一样inner
或left
加入。当然你需要使用别名来区分这两者,但你已经正确地做到了。
select p.*,p2.prd_name
from products p
left join products p2 on p2.prd_id = p.prd_ref_id;
答案 1 :(得分:0)
只需删除self
一词即可。它不是sql中的关键字。
select p.*,p2.prd_name from products p join products p2 on p2.prd_id = p.prd_ref_id
答案 2 :(得分:0)
自连接语法如下所示:
select p.*,p2.prd_name
from products p
join products p2
where p2.prd_id = p.prd_ref_id
答案 3 :(得分:0)
这些是sql中的三种连接:
所以,我认为你应该把表p作为左表,然后离开连接p2。
SELECT p.*,p2.prd_name FROM products p LEFT JOIN products p2 ON p2.prd_id = p.prd_ref_id