标签: outer-join

从LEFT OUTER JOIN中删除重复项

我的问题非常类似于限制LEFT JOIN,带有变化.

假设我有一个表SHOP和另一个表LOCATION.表位是表SHOP的一种子表,它有两列感兴趣的,一个是分区键(称之为KEY)和一个"SHOP"号.这与表SHOP中的数字"NO"匹配.

我试过这个左外连接:

SELECT S.NO, L.KEY
FROM SHOP S
LEFT OUTER JOIN LOCATN L ON S.NO = L.SHOP
Run Code Online (Sandbox Code Playgroud)

但由于有很多地方属于一家商店,因此我得到了很多重复.我想消除它们,只是得到一个没有重复的"商店,关键"条目列表.

数据正确但重复显示如下:

SHOP     KEY
 1       XXX
 1       XXX
 2       YYY
 3       ZZZ
 3       ZZZ  etc.
Run Code Online (Sandbox Code Playgroud)

我希望数据看起来像这样:

SHOP     KEY
 1       XXX
 2       YYY
 3       ZZZ  etc.
Run Code Online (Sandbox Code Playgroud)

购物台:

 NO
 1       
 2       
 3       
Run Code Online (Sandbox Code Playgroud)

位置表:

 LOCATION   SHOP  KEY
   L-1       1    XXX   
   L-2       1    XXX   
   L-3       2    YYY   
   L-4       3    YYY   
   L-5       3    YYY   
Run Code Online (Sandbox Code Playgroud)

(ORACLE 10g数据库)

sql oracle left-join outer-join oracle10g

19
推荐指数
3
解决办法
8万
查看次数

Linq Sub-Select

如何在LINQ中编写子选择.

如果我有一个客户列表和一个订单列表,我希望所有没有订单的客户.

这是我的伪代码尝试:

    var  res = from c in customers 
where c.CustomerID ! in (from o in orders select o.CustomerID) 
select c
Run Code Online (Sandbox Code Playgroud)

c# linq outer-join

15
推荐指数
2
解决办法
4万
查看次数

Hibernate/JPA:如何强制隐式连接使用LEFT OUTER JOINS

有一个类与类Offer可选的关系Article.因此,某些商品物品属性具有null价值.

如果我使用以下声明,一切正常.我得到了所有的报价,甚至那些没有文章的报价.

SELECT o FROM Offer o 
         LEFT OUTER JOIN o.article a 
         LEFT OUTER JOIN o.vendor v 
         WHERE v.number = '0212' OR a.nummer = '123456'
Run Code Online (Sandbox Code Playgroud)

如果我将声明更改为:

SELECT o FROM Offer o 
         LEFT OUTER JOIN o.article a 
         LEFT OUTER JOIN o.vendor v 
         WHERE v.number = '0212' OR o.article.nummer = '123456'
Run Code Online (Sandbox Code Playgroud)

我只得到这些提供不同的文章NULL.这是因为隐式连接(o.article.nummer)的表示法强制内连接.

是否有可能强制左外连接为隐式连接(注释驱动或其他)?如果有可能我可以使用这样的简短形式:

SELECT o FROM Offer o 
         WHERE v.number = '0212' OR o.article.nummer = '123456'
Run Code Online (Sandbox Code Playgroud)

hibernate jpa hql outer-join jql

14
推荐指数
1
解决办法
1万
查看次数

Hibernate默认加入可空多对一

我在ProductDfn类中有这样的hibernate映射

@ManyToOne( fetch = FetchType.LAZY, optional = true )
@JoinColumn( name = "productTypeFk", nullable = true )
public ProductType getProductType()
{
    return productType;
}
Run Code Online (Sandbox Code Playgroud)

请注意,该关系被定义为可选(并且该列可以为空).

做HQL的时候是这样的

select p.name as col1, p.productType.name as col2 from ProductDfn p
Run Code Online (Sandbox Code Playgroud)

内部联接用于将ProductDfn连接到ProductType,因为hibernate从select子句中的隐式连接生成显式SQL连接.

但是,当执行上述操作时,如果productType为null(在DB中),则由于内部联接而不返回任何行.对于这种关系,我希望hibernate默认为执行外连接(因为关系是可选的)所以我会得到col2的"null",而不是没有行.

有谁知道这是否可能?

谢谢.

hibernate join nullable outer-join

13
推荐指数
1
解决办法
2万
查看次数

在SQLAlchemy中使用ORM映射进行外部联接

我在SQLAlchemy 0.6.8中使用ORM Mapping.

我有三个表(A,B和C),它们之间没有外键.

我正在尝试连接表A和B,然后使用C离开外连接.我期待一个名为元组,字段A,B和C - C字段有时设置为None.)

只需选择两个表格,我就可以轻松完成第一次连接.

(session.query(A, B)
    .filter(A.some_field = B.some_other_field))
Run Code Online (Sandbox Code Playgroud)

这让我得到一个带有字段A和B的NamedTuple.

然后我添加外连接,使其成为:

(session.query(A, B)
    .filter(A.some_field==B.some_other_field))
    .outerjoin((C, A.some_field==C.some_different_field))
Run Code Online (Sandbox Code Playgroud)

结果仍然只有两个表.我无法访问C的其他字段(即使在它们存在的情况下).

执行左外连接的正确方法是什么,才能访问最右边的表的字段?

如果我可以避免它,我宁愿不回退到基本的SQL - 我正在努力学习利用ORM.

orm join sqlalchemy outer-join

13
推荐指数
1
解决办法
1万
查看次数

如何搜索Sql Server 2008 R2存储过程的字符串?

我正在将遗留的SQLS2k迁移到2008R2,似乎所有数据访问都是通过存储过程完成的,并且任何自定义查询都使用旧的*= =*外连接语法.有超过一百个proc所以我不想单独打开每一个以查看它是否使用该语法(大多数不会),是否有一种方法可以查询元数据以获取一个procs/functions/views列表/触发器,然后循环搜索*==*字符串,打印出违规对象的名称?

我的背景是oracle,我知道如何在那里找到元数据视图,但我对Sql Server有点新.降级兼容性版本不是一种选择.

谢谢!

sql-server join sql-server-2000 outer-join sql-server-2008

13
推荐指数
1
解决办法
2万
查看次数

sqlite LEFT OUTER JOIN多个表

在这个例子中,我们在SQLite数据库上有3个相关的表:

CREATE TABLE test1 (
    c1 integer,
    primary key (c1)
);
CREATE TABLE test2 (
    c1 integer,
    c2 integer,
    primary key (c1, c2)
);    
CREATE TABLE test3 (
    c2 integer,
    c3 integer,
    primary key (c2)
);
Run Code Online (Sandbox Code Playgroud)

现在我需要加入所有表格:

 test1 -> test2 (with c1 column)
          test2 -> test3 (with c2 column).

我试过这个解决方案,但它没有运行:

SELECT 
   * 
   FROM test1 a 
        LEFT OUTER JOIN test2 b
                        LEFT OUTER JOIN test3 c
                          ON c.c2 = b.c2 
          ON b.c1=a.c1 
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误: near "ON": syntax error.

有帮助吗?

sql sqlite outer-join

13
推荐指数
1
解决办法
5万
查看次数

PostgreSQL对连接中的表数有限制吗?

今天在玩动态查询生成时,我发现mysql在连接中可以使用多少个表的最大限制是硬的:61.

这让我对PostgreSQL感到好奇,PostgreSQL有类似的限制吗?

注意:我出于好奇而不是需要这样做.

postgresql outer-join

12
推荐指数
1
解决办法
2461
查看次数

C#外部应用于LINQ

如何在LINQ中实现外部应用?我有一点问题.

这是我正在使用的SQL查询.

SELECT u.masterID
      ,u.user
      ,h.created
FROM dbo.Users u
OUTER APPLY (SELECT TOP 1 * FROM UserHistory h where h.masterID = u.masterID ORDER BY created DESC) h
Run Code Online (Sandbox Code Playgroud)

.net c# linq outer-join

11
推荐指数
2
解决办法
8865
查看次数

在Oracle中的多个表上进行左外连接

如何编写一个oracle查询,它等同于informix中的以下查询:

select tab1.a,tab2.b,tab3.c,tab4.d 
  from table1 tab1,
       table2 tab2 OUTER (table3 tab3,table4 tab4,table5 tab5) 
 where tab3.xya = tab4.xya 
   AND tab4.ss = tab1.ss 
   AND tab3.dd = tab5.dd 
   AND tab1.fg = tab2.fg 
   AND tab4.kk = tab5.kk 
   AND tab3.desc = "XYZ"
Run Code Online (Sandbox Code Playgroud)

我试过:

select tab1.a,tab2.b,tab3.c,tab4.d 
  from table1 tab1,
       table2 tab2 LEFT OUTER JOIN (table3 tab3,table4 tab4,table5 tab5) 
 where tab3.xya = tab4.xya 
   AND tab4.ss = tab1.ss 
   AND tab3.dd = tab5.dd 
   AND tab1.fg = tab2.fg 
   AND tab4.kk = tab5.kk 
   AND tab3.desc = "XYZ"
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我获得正确的语法.

sql oracle outer-join

11
推荐指数
2
解决办法
14万
查看次数