标签: outer-join

比较内连接和外连接SQL语句

内连接和外连接有什么区别?这两种连接的确切含义是什么?

sql inner-join outer-join

8
推荐指数
1
解决办法
6062
查看次数

使用LINQ需要有关内部连接查询的帮助

我在XML数据集中有两个表.T1,T2.每个表都有一个ID列.

T1有一个客户列表T2有一个订单列表

我想构建一个LINQ查询,它只返回没有订单的客户的ID.换句话说,T2表中不存在客户ID.

哦,是的,我正在使用C#

谢谢!

c# linq-to-xml outer-join

7
推荐指数
2
解决办法
2500
查看次数

Linq to Entities和LEFT OUTER JOIN问题与MANY:1关系

有人可以告诉我,为什么Linq to Entities会将多个关系转换为1个关系left outer join而不是inner join?因为对DB本身存在引用约束以确保在右表中有记录,所以inner join应该使用它(并且它将更快地工作)

如果关系很多,那么0..1 left outer join就是正确的.

是否有可能以某种方式编写LINQ,因此它将转换为inner join而不是left outer join.它会大大加快查询执行速度......我以前没有使用过eSQL,但在这种情况下使用它会是明智的吗?它会解决我的问题吗?

编辑

我更新了我的标签,以包含我在后台使用的技术:

  • 实体框架V1
  • Devart dotConnect for Mysql
  • MySql数据库

如果有人可以测试在Microsoft SQL服务器上是否也是如此,如果这是Devart的问题或者它是一般的L2EF功能,它也会给我一些见解......但我怀疑EF是罪魁祸首.

mysql linq-to-entities outer-join devart dotconnect

7
推荐指数
1
解决办法
2341
查看次数

如何在> 2个表(Oracle)上进行外连接

我不确定如何描述我的表格结构,所以希望这是有道理的......

我有3个层次关系的表,这样A与B之间有一对多的关系,而B又与C有一对多的关系.诀窍是允许B和C中的外键为空(即没有父项)定义).我也有D和E,与A,B或C(直接)无关.

最后,我有一个F,它是一个与C,D和E有多对一关系的连接表.它的所有字段(FK到其他表)都不可为空.

我想编写一个SQL语句来连接单个结果集中的所有表.我知道我必须使用外部联接,因为我希望所有的A都返回,无论它是否在B中有子项,与B和C类似.

问题一:我一直在研究ANSI外连接语法(之前我只使用过Oracle"(+)")并且找不到外连接超过2个表的示例.有人可以提供/指出一个例子吗?

问题二:是否可以根据连接表F包含表D和E中的记录?如果是这样,这是用外连接完成的吗?

谢谢!

编辑

当然,在我发布这个之后,我找到了一个回答问题1的例子.然而,问题2仍然让我难过.

例:

         SELECT A.a,
                B.b,
                C.c
           FROM A
FULL OUTER JOIN B ON B.a = A.a
FULL OUTER JOIN C ON C.b = B.b
Run Code Online (Sandbox Code Playgroud)

oracle multiple-tables outer-join

7
推荐指数
2
解决办法
5万
查看次数

交叉连接行为(SQLServer 2008)

我一直试图通过我的查询来追踪问题.查询实际上是由HQL从HQL生成的,但生成的SQL没有达到我的预期.稍微修改SQL会产生正确的结果,但我不确定为什么修改应该有所不同.

原始查询(不返回任何行)

select sched.id, max(txn.dttm), acc.id
from PaymentSchedulePeriod sched 
cross join PaymentSchedulePayment pay
right outer join AccountTransaction txn on pay.accountTransactionFk=txn.id 
right outer join Account acc on txn.accountFk=acc.id 
where sched.accountFk=acc.id 
group by sched.id, acc.id
Run Code Online (Sandbox Code Playgroud)

修改后的查询 - 用逗号替换交叉连接(隐式交叉连接)

返回一行

select sched.id, max(txn.dttm), acc.id
from PaymentSchedulePeriod sched 
,PaymentSchedulePayment pay
right outer join AccountTransaction txn on pay.accountTransactionFk=txn.id 
right outer join Account acc on txn.accountFk=acc.id 
where sched.accountFk=acc.id 
group by sched.id, acc.id
Run Code Online (Sandbox Code Playgroud)

我的理解可能是不正确的,写作from Table1 a, Table2 b与写作是一样的from Table 1 a cross join Table2 …

sql sql-server outer-join cross-join sql-server-2008

7
推荐指数
1
解决办法
1805
查看次数

Linq-to-sql不会产生多个外连接?

关于linq-to-sql我有一个奇怪的问题,我真的试过搜索它.我正在设计一个sql数据库,最近刚尝试从中检索一个对象.

问题在于多个连接.我的所有表都使用identity-columns作为主键.

Db设计如下:

MasterTable:Id(主键,标识列,int),MasterColumn1(nvarchar(50))

Slave1:Id(主键,标识列,int),MasterId(int,主键 - > MasterTable Id),SlaveCol1

Slave2:Id(主键,标识列,int),MasterId(int,主键 - > MasterTable Id),SlaveColumn2

使用的代码:

var db = new TestDbDataContext() { Log = Console.Out };
var res = from f in db.MasterTables
          where f.MasterColumn1 == "wtf"
          select new
                     {
                         f.Id, 
                         SlaveCols1 = f.Slave1s.Select(s => s.SlaveCol1),
                         SlaveCols2 = f.Slave2s.Select(s => s.SlaveColumn2)
                     };
foreach (var re in res)
{
    Console.Out.WriteLine(
        re.Id + " "
      + string.Join(", ", re.SlaveCols1.ToArray()) + " "
      + string.Join(", ", re.SlaveCols2.ToArray())
    );
}
Run Code Online (Sandbox Code Playgroud)

日志是:

SELECT [t0].[Id], [t1].[SlaveCol1], ( …
Run Code Online (Sandbox Code Playgroud)

c# outer-join linq-to-sql

7
推荐指数
1
解决办法
806
查看次数

R中的外/张量产品

给定每个维度的p向量,计算其张量/外部/ Kruskal产品的最佳方法是什么(带有条目的-array X ?循环是微不足道的,但是很愚蠢.使用重复调用可以正常工作,但似乎不是最佳解决方案(显然,随着p增加,速度会变慢).有更好的方法吗?x1,x2,...,xpdpX[i1,i2,..ip] = x1[i1]x2[i2]...xp[ip])outer

编辑:

我目前最好的是

array(apply(expand.grid(x1, x2, x3), 1, prod), dim=rep(d, 3))
Run Code Online (Sandbox Code Playgroud)

至少"感觉更好"......

编辑2:回应@Dwin,这是一个完整的例子

d=3
x1 = 1:d
x2 = 1:d+3
x3 = 1:d+6
array(apply(expand.grid(x1, x2, x3), 1, prod), dim=rep(d, 3))

, , 1

     [,1] [,2] [,3]
[1,]   28   35   42
[2,]   56   70   84
[3,]   84  105  126

, , 2

     [,1] [,2] [,3]
[1,]   32   40   48
[2,]   64   80   96
[3,]   96  120  144

, …
Run Code Online (Sandbox Code Playgroud)

r outer-join

7
推荐指数
1
解决办法
6221
查看次数

merge.data.table with all = True引入了NA行.它是否正确?

在填充的data.table和另一个为空的data.table之间进行合并会在结果data.table中引入一个NA行:

a = data.table(c=c(1,2),key='c')
b = data.table(c=3,key='c')
b=b[c!=3]
b
# Empty data.table (0 rows) of 1 col: c
merge(a,b,all=T)
#     c
# 1: NA
# 2:  1
# 3:  2
Run Code Online (Sandbox Code Playgroud)

为什么?我希望它只返回data.table行a,就像merge.data.frame一样:

> merge.data.frame(a,b,all=T,by='c')
#  c
#1 1
#2 2
Run Code Online (Sandbox Code Playgroud)

r outer-join data.table

7
推荐指数
1
解决办法
9789
查看次数

使用data.table进行矩阵运算和分量加法

如果事先不知道要求和的矩阵数,那么进行分量加法的最佳方法是什么?更一般地说,有没有一种很好的方法在的上下文中执行矩阵(或多维数组)操作?我data.table通过几个固定变量或类别对数据进行排序和分组的效率,每个变量或类别包含不同数量的观察值.

例如:

  1. 找到数据的每个观察(行)中给出的向量分量的外积,返回每行的矩阵.
  2. 在每组数据类别的所有行上按组件顺序对结果矩阵求和.

这里用2x2矩阵说明,只有一个类别:

library(data.table)

# example data, number of rows differs by category t
N <- 5
dt <- data.table(t = rep(c("a", "b"), each = 3, len = N), 
                 x1 = rep(1:2, len = N), x2 = rep(3:5, len = N),
                 y1 = rep(1:3, len = N), y2 = rep(2:5, len = N))
setkey(dt, t)
> dt
   t x1 x2 y1 y2
1: a  1  3  1  2
2: a  2  4 …
Run Code Online (Sandbox Code Playgroud)

r matrix outer-join data.table

7
推荐指数
1
解决办法
804
查看次数

Python pandas:合并两个没有键的表(将2个数据帧与广播所有元素相乘; NxN数据帧)

我想合并2个数据帧与广播关系:没有公共索引,只想找到2个数据帧中的所有行对.所以想要使N行数据帧x M行dataframe = N*M行数据帧.有没有规则可以在不使用itertool的情况下实现这一目标?

DF1=
  id  quantity  
0  1        20  
1  2        23  

DF2=
      name  part  
    0  'A'   3  
    1  'B'   4  
    2  'C'   5  

DF_merged=
      id  quantity name part 
    0  1        20  'A'  3 
    1  1        20  'B'  4 
    2  1        20  'C'  5 
    3  2        23  'A'  3
    4  2        23  'B'  4
    5  2        23  'C'  5
Run Code Online (Sandbox Code Playgroud)

python merge broadcast outer-join pandas

7
推荐指数
1
解决办法
4680
查看次数