相关疑难解决方法(0)

使用Oracle 11g中的+符号左外连接

任何人都可以告诉我下面的2个查询是左外连接还是右外连接的例子?

Table Part:
Name         Null?       Type
PART_ID      NOT NULL    VARCHAR2(4)
SUPPLIER_ID              VARCHAR2(4)

PART_ID SUPPLIER_ID
P1      S1
P2      S2
P3  
P4  

Table Supplier:
Name            Null?     Type
SUPPLIER_ID NOT NULL      VARCHAR2(4)
SUPPLIER_NAME   NOT NULL  VARCHAR2(20)

SUPPLIER_ID  SUPPLIER_NAME
S1           Supplier#1
S2           Supplier#2
S3           Supplier#3
Run Code Online (Sandbox Code Playgroud)

显示所有零件,无论供应商是否供货:

SELECT P.Part_Id, S.Supplier_Name
FROM Part P, Supplier S
WHERE P.Supplier_Id = S.Supplier_Id (+)

SELECT P.Part_Id, S.Supplier_Name
FROM Part P, Supplier S
WHERE S.Supplier_Id (+) = P.Supplier_Id

sql oracle11g

79
推荐指数
2
解决办法
54万
查看次数

Oracle SQL WHERE子句中的(+)符号意味着什么?

可能重复:
Oracle:(+)在WHERE子句中做什么?

在Oracle数据库环境中考虑下面的简化SQL查询(虽然我不确定它是否特定于Oracle):

SELECT 
   t0.foo, t1.bar
FROM
   FIRST_TABLE t0, SECOND_TABLE t1
WHERE
   t0.ID (+) = t1.ID;
Run Code Online (Sandbox Code Playgroud)

(+)WHERE条款中的符号是什么?如果这是一个无知的新手问题,我很抱歉,但是在Google或StackOverflow上搜索非常困难......因为即使使用引号,搜索引擎也会看到一个"+"符号,似乎想把它视为某种逻辑指令.

sql oracle

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

在不使用"左连接"的情况下模拟左连接

我需要模拟左连接效果而不使用"左连接"键.

我有两个表,A和B,都有idname列.我想在两个表中选择所有dbid,其中A中的名称等于B中的名称.

我使用它来进行同步,所以在开始时B是空的(所以我将有一对来自A的id,其值为一,而来自B的id为null).后来我将有价值的夫妻 - 价值和价值 - 无效.

通常它会是:

SELECT A.id, B.id
FROM A left join B
ON A.name = B.name
Run Code Online (Sandbox Code Playgroud)

问题是我不能使用left join并想知道是否/如何做同样的事情.

sql

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

(+)mysql中外连接的语法

可能重复:
Oracle"(+)"运算符
Oracle(旧?)联接 - 用于转换的工具/脚本?

多年来我一直在使用Oracle.现在我使用mysql并且在MySQL中找不到外连接的非ansi版本/速记版本.

在oracle我能做到这一点

select a.country acountry,
        a.stateProvince aStateProvince,
        b.countryName bcountry,
        b.name bstateProvince
  from User a,
          stateprovince b
  where a.country*=b.countryName **(+)**
          and a.stateProvince*=b.name **(+)**
Run Code Online (Sandbox Code Playgroud)

获得外部联接.mysql可以做类似的事吗?

mysql sql oracle outer-join

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

Oracle的字符串OUTER JOIN(+) - Migration PostgreSQL

我正在将客户端的软件数据库从Oracle迁移到PostgreSQL,我在理解查询,它做了什么以及如何迁移它时遇到了一些麻烦.

查询是:

SELECT * 
FROM TBL1, TBL2, TBL3, TBL4 
WHERE TBL3.Project_ID = TBL1.Project_ID 
 AND TBL2.Type_ID = TBL1.Type_ID 
 AND TBL4.PROPERTY_NAME(+)='Id' 
 AND TBL4.Entity_ID(+)=TBL1.Entity_ID
Run Code Online (Sandbox Code Playgroud)

而我得不到的部分是'Id'上的外连接(+).表上的连接,OK,但是在字符串上?我不知道它做了什么.

有人有想法吗?谢谢.

oracle postgresql join database-migration outer-join

6
推荐指数
1
解决办法
4172
查看次数

查询末尾的 (+) 是什么?

我对 oracle sql 很陌生,刚遇到一个看起来像这样的查询

SELECT some_field
FROM some_table
WHERE some_other_field=some_value(+);
Run Code Online (Sandbox Code Playgroud)

我对代码进行了简化和 annonimized,但我很好奇最后是什么(+)。我不记得在 mssql 世界中看到过。

sql oracle

4
推荐指数
1
解决办法
929
查看次数

如何在Oracle中转换"遗留"左外连接语句?

我在Oracle数据库中有两个表(A和G),可以根据帐号连接在一起.对此的一个警告是,其中一个表(G)的记录比另一个少约80个.当我一起查询两个表时,我需要获取所有行,以便我们在缺少的80行的列中看到NULL数据.

我目前有一个Oracle语句,它使用以下"遗留"语法执行左外连接查询:

SELECT A.AccountNo,
       A.ParcelNo,
       A.LocalNo,
       A.PrimaryUseCode, 
       A.DefaultTaxDistrict,
       RTRIM(G.Section),
       RTRIM(G.Township),
       RTRIM(g.Range)

  FROM tblAcct A, tblAcctLegalLocation G

 WHERE A.verstart <= '20100917999' AND A.verend > '20100917999' AND A.DefaultTaxDistrict = '2291' 
       AND (SUBSTR(A.AccountNo,1,1) = 'R' or SUBSTR(A.AccountNo,1,1)= 'I') 
       AND SUBSTR(a.ParcelNo,1,1)<> '7' and substr(a.ParcelNo,1,1)<>'8'
       AND A.AcctStatusCode IN ('A', 'T', 'E') 
       AND A.AccountNo = G.AccountNo(+)
       AND G.verstart(+) <= '20100917999' and G.verend(+) > '20100917999'
ORDER BY A.ParcelNo, A.LocalNo
Run Code Online (Sandbox Code Playgroud)

我正在尝试将此查询转换为"标准"LEFT JOIN类型查询,因为我被告知较新版本的Oracle支持此语法.我试过基本的

LEFT OUTER JOIN ON A.AccountNo = G.AccountNo 
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我的查询最多返回80行,少于全部数量.

任何人都可以告诉我我缺少什么或如何正确格式化查询?

sql oracle outer-join

3
推荐指数
1
解决办法
2383
查看次数

完整性检查:(+)Oracle DB的WHERE子句中的运算符?

可能重复:
Oracle"(+)"运算符

所以给了我一个带有以下内容的脚本:

SELECT BLAH
  FROM A_TABLE T1, A_TABLE T2, A_TABLE T3 
 WHERE T2.FIELD_1(+) = T1.FIELD_1
   AND T3.FIELD_1(+) = T2.FIELD_1
   ... etc a few more AND clauses that do that same thing
Run Code Online (Sandbox Code Playgroud)

我需要将此脚本转换为MSSQL Server,但我不知道该运算符正在做什么.这可能是某种错字吗?

sql-server oracle

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

oracle查询中的(+)运算符

查询如下

select tbl1.x, tbl2.y
  from
tbl1, tbl2
  where tbl1.some_column (+) = tbl2.some_column
  AND tbl1.some_column2 (+) = 'Y'
Run Code Online (Sandbox Code Playgroud)

令我困惑的是这一部分

 AND tbl1.some_column2 (+) = 'Y'
Run Code Online (Sandbox Code Playgroud)

这是什么意思??如果我删除(+)查询返回完全不同的行数.当=的两边都有列名时我确实理解了(+)的应用,但是当=的一边有一个字符串时,(+)做了什么?

sql oracle

0
推荐指数
1
解决办法
393
查看次数