Article View: cn.bbs.comp.database
Article #818[MSSQL FAQ] ��ʱʹ��Cross Joins
From: Galaxy��VOLUNTEERS��Database
Date: Sat, 15 Nov 2008 05:34
Date: Sat, 15 Nov 2008 05:34
79 lines
4584 bytes
4584 bytes
Q�������SQL�̳��У�cross joins����һ�������Ƽ������������������¿���ʹ��
cross joins��
A��
Cross Joins�������Ż������ÿһ�н�Ϻ�Ľ�������ζ������A��3�ж��B
��2�У�cross join�����6�еĽ�������ű�֮��û�н����κι�ϵ - ��ֻ�������
���п��ܵ���ϡ��������ʹ��cross joins������Բο�http://msdn.microsoft.com/
en-us/library/ms190690.aspx��
����һ��Σ����������A��10,000�ж��B��30,000�У���ô�����С�Ķ���������
ʹ����cross join����ô���ͻ���300,000,000�� - ����Ȼ���Ǻܺõķ�������Ȼʹ
�����������������ݿ��ܻ�ͦ���ã���
���������Ҫʹ��SQL�������ܶ౨�?��ôCross Join�ͻ�dz����á�
��������Ҫдһ�����?��ÿ���̵��ÿ����Ʒ����������������ܻ�ʹ�����´��룺
SELECT Store, Product, SUM(Sales) as TotalSales
FROM Sales
GROUP BY Store, Product
����������ǡ�����̵�û�ж�Ӧ�IJ�Ʒ�Ļ���ʾ�۸�Ϊ0�����������벻�᷵��û����
���IJ�Ʒ���С�
��cross join���ܽ�������⡣
SELECT S.Store, P.Product
FROM Stores S
CROSS JOIN Products P
�������տ���ʹ�õĴ������£�
SELECT S.Store, P.Product, ISNULL(C.TotalSales,0) as TotalSales
FROM Stores S
CROSS JOIN Products P
LEFT OUTER JOIN
(SELECT Store, Product, SUM(Sales) as TotalSales
FROM Sales
GROUP BY Store, Product) C
ON
S.Store = C.Store AND
P.Product = C.Product
�ý������ʹ����������ġ�����ħ�����̡���
(A x B ) -> (C)
�����ֱ�����A��B cross join����C left outer join����A��B���������ݿ���
�ģ�C����˹��ɵõ��ı?
��һЩ��Ҫע�����Ҫ���
1. ���е�����ɸѡ��������ʱ�䷶Χ��/���������ͣ���Ҫ������IJ�ѯ��ʵ�֡�
2. ע���A�ͱ�B�Ľ�Ϸ�ʽ������A�������ǡ�A_ID�����B�ǡ�B_ID������ô���ջ�
�õı�C��Ӧ���� A_ID��B_ID��ϡ�
3. ���о�����ı�����������ʾ����Ŀ�������������ʾ���ֲ�Ʒ����Ҫ������ѯ
�ж��塣
���øղŵ�select�����Ϊ����
�������ֻ��Ҫ2005�꣬��ƷIDΪProductID #23����ݣ���ô�����Ӧ�����£�
SELECT S.Store, P.Product, ISNULL(C.TotalSales,0) as TotalSales
FROM Stores S
CROSS JOIN Products P
LEFT OUTER JOIN
(SELECT Store, Product, SUM(Sales) as TotalSales
FROM Sales
WHERE TransactionDate between '1/1/2005' and '12/31/2005'
GROUP BY Store, Product) C
ON
S.Store = C.Store AND
P.Product = C.Product
WHERE
P.Product = 23
�������Ҫ��һ��������ڶ����е���ݽ���cross join֮ǰ�ȶ����е�С�Ӽ��Ȳ���
һ�¡�
--
Welcome to Database Board
��ӭ������ݿ��
http://bbs.sjtu.edu.cn/bbsdoc?board=database
[m[1;31m�� ��Դ:����ˮ˼Դ bbs.sjtu.edu.cn��[FROM: 207.46.55.27][m
Technical Details
Message-ID:
<4d4HXP$ayb@bbs.sjtu.edu.cn>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news2.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!news.neu.edu.cn!news.shec6.edu.cn!SJTUShow Full Headers
Complete Article Headers
X-Google-Thread: 101948,5ebb9bc8c34fcf1b,start X-Google-Attributes: gid101948,domainid0,public,usenet X-Google-Language: Chinese,GB Path: arc1-ca.pugleaf.net!g2news2.google.com!news2.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!news.neu.edu.cn!news.shec6.edu.cn!SJTU From: Dem.bbs@bbs.sjtu.edu.cn (Galaxy��VOLUNTEERS��Database) Newsgroups: cn.bbs.comp.database Subject: [MSSQL FAQ] ��ʱʹ��Cross Joins Date: 15 Nov 2008 05:34:17 GMT Organization: ��ˮ˼Դ Message-ID: <4d4HXP$ayb@bbs.sjtu.edu.cn> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit X-Filename: database/M.1226727241.A Lines: 78