Düzeltme: LEFT OUTER JOIN yanlış sonuçlar DISTINCT anahtar sözcüğü oluşturan kullanan bir görünüm

Makale çevirileri Makale çevirileri
Makale numarası: 277698 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
# HATA: 58544 (SQLBUG_70)
Hepsini aç | Hepsini kapa

Belirtiler

LEFT OUTER JOIN DISTINCT anahtar sözcüğünü kullanır, iç içe geçmiş bir görünümde içeren BIR SELECT sorgusu için SQL Server 7.0 hatalı sonuçlar üretir. Örneğin:
use pubs
go
set nocount on
go
CREATE TABLE [A] (
	[exch_server] [varchar] (10) NOT NULL ,
	[note_id] [varchar] (10) NOT NULL ,
	[entity_id] [varchar] (10) NOT NULL 
) ON [PRIMARY]
GO
CREATE TABLE [B] (
	[note_id] [varchar] (10) NOT NULL ,
	[entity_id] [varchar] (10) NOT NULL 
) ON [PRIMARY] 
GO
CREATE TABLE [C] (
	[channel_entity_id] [varchar] (10) NOT NULL ,
	[entity_id] [varchar] (10) NOT NULL 
) ON [PRIMARY]
GO
CREATE TABLE [D] (
	[exch_server] [varchar] (10) NOT NULL ,
	[entity_id] [varchar] (10) NOT NULL 
) ON [PRIMARY]
GO
CREATE VIEW viewE
AS
SELECT DISTINCT D.exch_server
              , C.entity_id
           FROM C INNER JOIN
                D 
             ON C.channel_entity_id
              = D.entity_id
GO
CREATE VIEW viewF
AS
SELECT viewE.exch_server
     , B.note_id
     , B.entity_id
  FROM viewE  INNER JOIN
       B 
    ON viewE.entity_id
     = B.entity_id
GO
INSERT [A] VALUES ('testA','1','5')
GO
INSERT [B] VALUES ('1','5')
GO	
INSERT [C] VALUES ('2','5')
GO
INSERT [D] VALUES ('testB','2')
GO
set nocount off
GO

SELECT A.note_id
      ,A.entity_id
      ,viewF.exch_server
  FROM A LEFT OUTER JOIN
       viewF 
    ON A.note_id
     = viewF.note_id 
 Where viewF.exch_server IS NULL
GO

-- The preceding query returns one row instead of zero rows.<BR/>

DROP TABLE [A]
GO
DROP TABLE [B]
GO
DROP TABLE [C]
GO
DROP TABLE [D]
GO
DROP VIEW viewF
GO
DROP VIEW viewE
GO
				

Pratik Çözüm

Bu soruna geçici bir çözüm için aşağıdaki yöntemlerden birini kullanın:
  • DISTINCT anahtar sözcüğü viewE ' kaldırın.
  • Kalıcı bir tablo, viewE veya viewF olun.
  • Kalıcı bir tablo, viewE hem viewF olun.
  • Iç içe seçer ve son sorgudaki tabloları türetilir.

Durum

Microsoft bu sorunun, SQL Server 7.0 için onaylamıştır. Bu sorun, Microsoft SQL Server 7.0 için ABD Service Pack 3'te düzeltilmiştir. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
274799INF: Microsoft SQL Server 7.0 ve Microsoft Data Engine (MSDE) 1.0 Service Pack 3 nasıl elde edilir
Daha fazla bilgi için, birincil destek sağlayıcınıza başvurun.

Özellikler

Makale numarası: 277698 - Last Review: 23 Ocak 2014 Perşembe - Gözden geçirme: 2.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 7.0 Standard Edition
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbbug kbfix KB277698 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:277698

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com