Saya terjebak dalam mencoba mencari tahu mengapa kueri a mengembalikan catatan yang berbeda dari kueri b. Kedua kueri tampaknya memiliki tujuan yang sama namun a mengembalikan 500 dan b 3500.

Ini adalah kueri a:

SELECT DISTINCT ODE.OrderBillToID
FROM    APTIFY.dbo.vwVwOrderDetailsKGExtended  ODE
WHERE ProductID IN (2022, 1393)
AND LTRIM(RTRIM(ODE.OrderStatus)) <> 'Cancelled'
AND LTRIM(RTRIM(ODE.OrderType)) <> 'Cancellation'
AND LTRIM(RTRIM(ODE.cancellationStatus)) <> 'FULLY CANCELLED'
UNION
SELECT  DISTINCT ID
FROM    APTIFY.dbo.vwPersons WHERE City = 'A'
UNION 
SELECT  DISTINCT RecordID 
FROM    APTIFY.dbo.vwTopicCodeLinks WHERE TopicCodeID = 16 AND Value = 'Yes,     Please'

Pertanyaan b:

SELECT
    APTIFY..vwPersons.ID
FROM 
    APTIFY..vwPersons 
WHERE    
    ( APTIFY..vwPersons.ID   IN  (  
              SELECT
                   vwMeetingRegistrants.ID
              FROM
                   APTIFY.dbo.vwMeetings   vwMeetings
                   INNER JOIN APTIFY.dbo.vwMeetingRegistrants   vwMeetingRegistrants   
                        ON vwMeetings.ID=vwMeetingRegistrants.ActualMeetingID              WHERE
                        vwMeetings.ProductID  = 2022
 ) 
OR
     APTIFY..vwPersons.ID   IN  (  
              SELECT
                   vwMeetingRegistrants.ID
              FROM
                   APTIFY.dbo.vwMeetings   vwMeetings
                   INNER JOIN APTIFY.dbo.vwMeetingRegistrants   vwMeetingRegistrants   
                        ON vwMeetings.ID=vwMeetingRegistrants.ActualMeetingID              WHERE
                        vwMeetings.ProductID  = 1393
 ) 
OR
     APTIFY..vwPersons.City = N'Albany' )
OR
((
     APTIFY..vwPersons.ID   IN  (  
              SELECT
                   RecordID
              FROM
                   APTIFY.dbo.vwTopicCodeLinks     vwTopicCodeLinks
              WHERE
                        vwTopicCodeLinks.TopicCodeID  = 16
 ) 
AND
     APTIFY..vwPersons.ID   IN  (  
              SELECT
                   RecordID
              FROM
                   APTIFY.dbo.vwTopicCodeLinks     vwTopicCodeLinks
              WHERE
                        vwTopicCodeLinks.Value  = N'Yes, Please'
 ) )
)

VwMeetingsPendaftar dari kueri b menghasilkan catatan yang sama seperti orderkgdetailsextended dari kueri. Saya tidak dapat melihat perbedaan APAPUN dalam kueri tersebut - yang mungkin menunjukkan kurangnya pemahaman saya tentang perilaku kueri.
BESAR Terima kasih untuk setiap poin teman-teman! :)

0
Thomas Pollack 21 Mei 2015, 11:20
1
Kueri pertama Anda memiliki pemeriksaan untuk 'Cancelled', 'Cancellation'dan 'FULLY CANCELLED' yang tidak dilakukan oleh kueri kedua, dan itu memeriksa City = 'A' alih-alih City = N'Albany' dan saya rasa ada lebih banyak perbedaan. Apakah Anda memeriksa mereka?
 – 
Peter Lang
21 Mei 2015, 11:30
Terima kasih Peter untuk kembali kepada saya! Ya kamu benar! namun, kota 'Albany' dan kota 'A' sama dengan 'Dibatalkan' Pembatalan dan Dibatalkan Sepenuhnya sama adalah catatan dari tampilan pendaftar rapat yang digunakan dalam kueri B. Setelah banyak percobaan dan kesalahan, saya pikir ini terkait dengan OR dan AND dalam kueri B tetapi saya tidak mengerti atau mengerti mengapa.
 – 
Thomas Pollack
22 Mei 2015, 04:54

1 menjawab

Jawaban Terbaik

Seperti yang keluar, kueri yang tidak terstruktur dengan benar adalah hasil dari aplikasi yang dikonfigurasi dengan buruk, Aptify.

0
Thomas Pollack 29 Mei 2015, 04:55