Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:如何使用WHERE而不是外部联接_Sql_Join_Where Clause_Sqlbase - Fatal编程技术网

SQL:如何使用WHERE而不是外部联接

SQL:如何使用WHERE而不是外部联接,sql,join,where-clause,sqlbase,Sql,Join,Where Clause,Sqlbase,我使用的是一个旧的数据库调用centuragupta,它没有join子句(left-join、right-join、inner-join、outer-join)。因此,我需要使用where来替换我需要的外部连接: SELECT * FROM table1 OUTER JOIN table2 ON table1.id_person table2.id_person; 我认为其中只能替换内部连接: SELECT * FROM table1 WHERE table1.id_person = tabl

我使用的是一个旧的数据库调用centuragupta,它没有
join
子句(left-join、right-join、inner-join、outer-join)。因此,我需要使用
where
来替换我需要的
外部连接

SELECT *
FROM table1
OUTER JOIN table2
ON table1.id_person table2.id_person;
我认为
其中
只能替换
内部连接

SELECT *
FROM table1
WHERE table1.id_person = table2.id_person;

您可以尝试使用子查询而不是联接

SELECT *
FROM table1 t1
WHERE id_Person IN 
(
SELECT id_Person
FROM table2 
)

当我不知道连接时,我使用了这种实现。可能不完全正确,但可以让你接近:

SELECT *
FROM table1 t1, table2 t2
WHERE t1.id_Person=t2.id_Person;

我不知道那个特定的数据库,但您可以使用相关子查询来获取“连接”数据。这将从
表1
中提取所有记录,并从
表2
中提取相关信息,如果
表2
中没有匹配的
id\u person
,则
whatever4
whatever5
为空:

SELECT t1.whatever1
    , t1.whatever2
    , t1.whatever3
    , (SELECT whatever4 FROM table2 AS t2 WHERE t2.id_person = t1.id_person) AS whatever4
    , (SELECT whatever5 FROM table2 AS t2 WHERE t2.id_person = t1.id_person) AS whatever5
FROM table1 AS t1

“名为Centura Gupta的旧数据库”
也许你实际上指的是OpenText Gupta SQLBase——它决不是“旧的”。
您可能正在运行一个“旧”版本的SQLBase,但它现在已升级到v12.2本机64位,并且肯定支持外部联接。 您可以使用本机Gupta外部联接-类似于Oracle(+)或标准ANSI外部联接。
如果要使用ANSI外部联接,请在服务器端Sql.ini中指定“ANSIJoinSyntax=1”

转到此处了解更多SQLBase连接语法:

本机Gupta外部联接:

SELECT t1.person_id, t2.person_id   
From table1 t1
Left Outer Join table2 t2 ON t1.id_person = t2.id_person
Where <what ever filter you want>
选择t1.id\u person,t2.id\u person
从表1 t1到表t2
其中t1.id_person=t2.id_person(+)

ANSI外部连接:

SELECT t1.person_id, t2.person_id   
From table1 t1
Left Outer Join table2 t2 ON t1.id_person = t2.id_person
Where <what ever filter you want>
选择t1.person\u id,t2.person\u id
来自表1 t1
左侧外部连接表2 t1.id_person=t2.id_person上的t2
哪里

转到此处了解更多SQLBase连接语法:

(1)没有外部连接这样的东西。(2) 标记您真正使用的数据库。我知道没有一个数据库不支持
JOIN
,而且在过去的15年里都不支持(所以我很好奇)。(3) 提供示例数据和所需结果。是否需要
完全联接
?还是只左/右连接?顺便说一句:第二个查询中缺少表2。根据我的搜索,我想知道这是否是OpenText SQLBase。这个语法指南看起来很有用。有一个关于连接的部分,包括“外部连接”:逗号是交叉连接(优先级比关键字连接低)&内部连接是交叉连接,其中。通过连接表示左连接和其他外部连接是常见问题。使用交叉联接表示联接&where是常见问题解答。这与联接不同。好的,请提供所需的列名和表名。我将更新子查询