我遇到了一个查询
Select * from R Natural Outer Join S
其中R=(A,B)有元组,{(1,2),(1,2),(3,4)}和S=(B,C)有元组{(2,5),(2,5),(4,6),(7,10)}。
为了实现这一点,我创建了两个名为R和S的关系。
create table R
(
A number(5),
B number(5)
)
create table S
(
B number(5),
C number(5)
)
我把提供的元组插入其中。
现在,在实现这个过程中,我了解到我使用的数据库工具(Oracle)不支持“自然外部连接”,所以我使用了以下查询
s
我的数据库中有两个表-产品和订单。一个订单只能是一种产品。
这是基本的想法:
我正在尝试做的是一个查询,它返回给定copmany_id的所有产品(来自该公司),订单少于10个(包括0个)
我的查询如下所示:
SELECT p.*
FROM product p,
order o
WHERE p.company_id =?
AND o.product_id = p.id
GROUP BY p.id
HAVING Count(o.id) < 10
ORDER BY p.id DESC
该查询适用于具有0<订单的产品,但不返回具有0订单的产品
有了两个表,products和submissions,这两个表都有大约100万条记录,并且都有完整的索引,我想根据一个条件来计算元素的数量。然而,即使计算join的基本结果也是非常慢的。
这两个表具有一对一的关系,其中submissions具有product_id外键。请参阅以下4个查询:
select count(*)
from products P
join submissions S on S.product_id=P.id
# Takes 2 seconds
并对该问题进行解释:
1 SIMPLE S index submissions_product_id_fore
我的表(不是第一个表)的左外部联接子句本身(也是自联接)没有返回空值,这会影响我的SELECT语句。查询是这样写的(表名无关紧要):
Select
SUM(CASE WHEN table2.date =‘day’ and table4.columnX =‘5’ then table3.value1 END),
SUM(CASE WHEN table2.date=’day’ and table4.columnX IS NULL then table3.value2 END)
FROM table1
INNER JOIN table2 on ...
INNER JOIN table3 on ...
请考虑下面的SQL。
SELECT DISTINCT bvc_Order.ID,
bvc_OrderItem.ProductID,
bvc_OrderItem_BundleItem.ProductID
FROM dbo.bvc_OrderItem WITH (nolock)
RIGHT OUTER JOIN dbo.bvc_Order WITH (nolock)
LEFT OUTER JOIN dbo.bvc_User WITH (nolock) ON dbo.bvc_Order.UserID = dbo.bvc_User.ID
LEFT
我有一个小表(2k )记录和一个大表(5mil)记录,我需要从小表中获取所有数据,并且只从大表中匹配数据,为了实现这一点,我执行了下面的查询select /*+ broadcast(small)*/ small.* From small left outer join large,虽然查询返回正确的结果,但是当我检查查询计划时,它显示了排序合并广播散列连接。有什么限制,如果小桌子是左表,我们不能广播,然后是什么出路。
所以我有两张桌子。我试图连接两个表,只返回表A中没有匹配表b的记录。
表A
--------------------
name amount date
--------------------
bob 250 4/8/2010
dan 100 4/8/2010
sla 222 4/8/2010
obo 344 4/8/2010
bob 100 4/8/2010
表B
--------------------
name amount date
--------------------
bob 250 4/8/2010
dan