home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / bit / listserv / sasl / 4051 < prev    next >
Encoding:
Text File  |  1992-09-03  |  8.1 KB  |  201 lines

  1. Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
  2. Path: sparky!uunet!uvaarpa!darwin.sura.net!paladin.american.edu!auvm!LEICESTER.AC.UK!MAIL_SYSTEM
  3. Via: uk.ac.leicester; Thu, 3 Sep 1992 16:24:53 +0100
  4. Message-ID: <SAS-L%92090311300363@VTVM2.BITNET>
  5. Newsgroups: bit.listserv.sas-l
  6. Date:         Thu, 3 Sep 1992 16:24:00 BST
  7. Reply-To:     Mail_System@LEICESTER.AC.UK
  8. Sender:       "SAS(r) Discussion" <SAS-L@UGA.BITNET>
  9. From:         Mail_System@LEICESTER.AC.UK
  10. Subject:      %% Undelivered Mail %%
  11. Comments: To: SAS-L <SAS-L@VTVM2.CC.VT.EDU>
  12. Lines: 187
  13.  
  14. Your mail was not delivered as follows:
  15. %MAIL-E-USERSPEC, invalid user specification '@UK.AC.LEICESTER.IRIX'
  16.  
  17. Your original mail header and message follow.
  18.  
  19. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  20. Via: UK.AC.NSFNET-RELAY; Thu, 3 Sep 92  16:24 BST
  21. Received: from vtvm2.cc.vt.edu by sun3.nsfnet-relay.ac.uk with Internet SMTP
  22.           id <sg.26437-0@sun3.nsfnet-relay.ac.uk>;
  23.           Thu, 3 Sep 1992 16:23:36 +0100
  24. Received: from vtvm2.cc.vt.edu by VTVM2.CC.VT.EDU (IBM VM SMTP V2R2) with BSMTP
  25.           id 9651; Thu, 03 Sep 92 11:20:37 EDT
  26. Received: from VTVM2.BITNET by vtvm2.cc.vt.edu (Mailer R2.08 R208002)
  27.           with BSMTP id 2183; Thu, 03 Sep 92 11:20:35 EDT
  28. Date: Thu, 3 Sep 1992 16:18:00 BST
  29. Reply-To: Mail_System@UK.AC.LEICESTER
  30. Original-Sender: "SAS(r) Discussion" <SAS-L@EDU.VT.CC.VTVM2>
  31. From: Mail_System@UK.AC.LEICESTER
  32. Subject: %% Undelivered Mail %%
  33. Comments: To: SAS-L <SAS-L@VTVM2.CC.VT.EDU>
  34. To: Multiple recipients of list SAS-L <SAS-L@EDU.VT.CC.VTVM2>
  35. Sender: SAS-L@EDU.VT.CC.VTVM2
  36.  
  37. Your mail was not delivered as follows:
  38. %MAIL-E-USERSPEC, invalid user specification '@UK.AC.LEICESTER.IRIX'
  39.  
  40. Your original mail header and message follow.
  41.  
  42. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  43. Via: UK.AC.NSFNET-RELAY; Thu, 3 Sep 92  16:18 BST
  44. Received: from vtvm2.cc.vt.edu by sun3.nsfnet-relay.ac.uk with Internet SMTP
  45.           id <sg.25629-0@sun3.nsfnet-relay.ac.uk>;
  46.           Thu, 3 Sep 1992 16:10:06 +0100
  47. Received: from vtvm2.cc.vt.edu by VTVM2.CC.VT.EDU (IBM VM SMTP V2R2) with BSMTP
  48.           id 9553; Thu, 03 Sep 92 11:08:47 EDT
  49. Received: from VTVM2.BITNET by vtvm2.cc.vt.edu (Mailer R2.08 R208002)
  50.           with BSMTP id 1536; Thu, 03 Sep 92 11:07:56 EDT
  51. Date: Thu, 3 Sep 1992 16:05:00 BST
  52. Reply-To: Mail_System@UK.AC.LEICESTER
  53. Original-Sender: "SAS(r) Discussion" <SAS-L@EDU.VT.CC.VTVM2>
  54. From: Mail_System@UK.AC.LEICESTER
  55. Subject: %% Undelivered Mail %%
  56. Comments: To: SAS-L <SAS-L@VTVM2.CC.VT.EDU>
  57. To: Multiple recipients of list SAS-L <SAS-L@EDU.VT.CC.VTVM2>
  58. Sender: SAS-L@EDU.VT.CC.VTVM2
  59.  
  60. Your mail was not delivered as follows:
  61. %MAIL-E-USERSPEC, invalid user specification '@UK.AC.LEICESTER.IRIX'
  62.  
  63. Your original mail header and message follow.
  64.  
  65. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  66. Via: UK.AC.NSFNET-RELAY; Thu, 3 Sep 92  16:05 BST
  67. Received: from vtvm2.cc.vt.edu by sun3.nsfnet-relay.ac.uk with Internet SMTP
  68.           id <sg.25320-0@sun3.nsfnet-relay.ac.uk>;
  69.           Thu, 3 Sep 1992 16:05:12 +0100
  70. Received: from vtvm2.cc.vt.edu by VTVM2.CC.VT.EDU (IBM VM SMTP V2R2) with BSMTP
  71.           id 9502; Thu, 03 Sep 92 11:04:15 EDT
  72. Received: from VTVM2.BITNET by vtvm2.cc.vt.edu (Mailer R2.08 R208002)
  73.           with BSMTP id 1170; Thu, 03 Sep 92 11:03:37 EDT
  74. Date: Thu, 3 Sep 1992 15:58:00 BST
  75. Reply-To: Mail_System@UK.AC.LEICESTER
  76. Original-Sender: "SAS(r) Discussion" <SAS-L@EDU.VT.CC.VTVM2>
  77. From: Mail_System@UK.AC.LEICESTER
  78. Subject: %% Undelivered Mail %%
  79. Comments: To: SAS-L <SAS-L@VTVM2.CC.VT.EDU>
  80. To: Multiple recipients of list SAS-L <SAS-L@EDU.VT.CC.VTVM2>
  81. Sender: SAS-L@EDU.VT.CC.VTVM2
  82.  
  83. Your mail was not delivered as follows:
  84. %MAIL-E-USERSPEC, invalid user specification '@UK.AC.LEICESTER.IRIX'
  85.  
  86. Your original mail header and message follow.
  87.  
  88. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  89. Via: UK.AC.NSFNET-RELAY; Thu, 3 Sep 92  15:57 BST
  90. Received: from vtvm2.cc.vt.edu by sun3.nsfnet-relay.ac.uk with Internet SMTP
  91.           id <sg.24811-0@sun3.nsfnet-relay.ac.uk>;
  92.           Thu, 3 Sep 1992 15:57:11 +0100
  93. Received: from vtvm2.cc.vt.edu by VTVM2.CC.VT.EDU (IBM VM SMTP V2R2) with BSMTP
  94.           id 9451; Thu, 03 Sep 92 10:56:11 EDT
  95. Received: from VTVM2.BITNET by vtvm2.cc.vt.edu (Mailer R2.08 R208002)
  96.           with BSMTP id 0631; Thu, 03 Sep 92 10:56:09 EDT
  97. Date: Thu, 3 Sep 1992 10:48:34 EDT
  98. Reply-To: Andy Norton <76350.1604@COM.COMPUSERVE>
  99. Original-Sender: "SAS(r) Discussion" <SAS-L@EDU.VT.CC.VTVM2>
  100. From: Andy Norton <76350.1604@COM.COMPUSERVE>
  101. Subject: Re: Finding non-dups via SQL (multiple keys)
  102. Comments: To: SAS-L <SAS-L@AWIIMC12.IMC.UNIVIE.AC.AT>
  103. To: Multiple recipients of list SAS-L <SAS-L@EDU.VT.CC.VTVM2>
  104. Sender: SAS-L@EDU.VT.CC.VTVM2
  105.  
  106. ----------------------------------------------------------------------
  107. CONTENT:    Information
  108. SUMMARY:   Jim Clark's response to Ray Pass is correct for single
  109.            keys.  Here are solutions for multiple keys.
  110. REL/PLTF:  6.07.01/CMS, 6.04/PC-DOS
  111. E-ADDR:    76350.1604@compuserve.com
  112. NAME:      Andy Norton
  113. ADDRESS:   Trilogy Consulting, 5228 Lovers Lane, Kalamazoo MI 49002
  114. PHONE:     (616) 344-2191
  115. ----------------------------------------------------------------------
  116.  
  117. Ray Pass had asked for a method to identify CASENO's in FILE1 that do
  118. not occur in FILE2.
  119.  
  120. Jim Clark responded with
  121. > title 'Eval Courses NOT IN Class Courses';
  122. > select distinct e.ident, e.ins
  123. >    from work.check e, f.course c
  124. >    where e.ident not in
  125. >     (select c.ident
  126. >      from f.course c)
  127. >    order by e.ident;
  128.  
  129. The general approach is correct and sufficient for Ray's problem.  I
  130. think you could use simply
  131.   select    CHECK.*
  132.   from      WORK.CHECK
  133.   where     CHECK.IDENT not in
  134.             ( select IDENT
  135.               from   F.COURSE)
  136.   order by  IDENT;
  137. to get the same result.  In other words, it is not necessary to join E
  138. with C in order to reference table C in a subquery.
  139.  
  140. The main purpose of my posting, however, is to point out that this
  141. method falls apart when you need to match on two keys instead of one.
  142. Suppose the IDENT's are repeated within different colleges, and you
  143. need to do a combined analysis.  Now the observations are identified
  144. with {COLLEGE, IDENT}.  The IN operator only works for a single
  145. variable, so can't handle this situation.
  146.  
  147. This is a widespread weakness in the design of SQL:  programs that work
  148. with single columns often cannot be extended to handle multiple
  149. columns.  If you write the program to handle multiple keys, it will be
  150. able to handle the single-key situation.
  151.  
  152. For a general solution which works with multiple keys, use
  153.   select    *
  154.   from      WORK.CHECK
  155.   where     not exists
  156.             ( select *
  157.               from   F.COURSE
  158.               where  COLLEGE = CHECK.COLLEGE and
  159.                      IDENT   = CHECK.IDENT)
  160.   order by  COLLEGE, IDENT;
  161.  
  162.   This is fairly intelligible but can be inefficient with the current
  163. optimizer, because the subquery is independently evaluated for each set
  164. of {COLLEGE, IDENT} values.  Defining indexes on COLLEGE and IDENT (in
  165. the COURSE file) could help.
  166.  
  167. It may be possible for the optimizer to automatically convert
  168. subqueries to joins in the future.
  169.  
  170. This alternative may be more efficient (depending on factors such as
  171. how many distinct {COLLEGE, IDENT} sets there are).  I haven't tested
  172. enough to determine exactly what the trade-offs are:
  173.  
  174.   select    CHECK.*
  175.   from      WORK.CHECK,
  176.             ( select COLLEGE, IDENT
  177.               from   WORK.CHECK
  178.               except
  179.               select COLLEGE, IDENT
  180.               from   F.COURSE) as NONDUP
  181.   where     CHECK.COLLEGE = NONDUP.COLLEGE and
  182.             CHECK.IDENT   = NONDUP.IDENT
  183.   order by  COLLEGE, IDENT;
  184.  
  185. Unlike the earlier subquery solution, this program processes all of the
  186. different {COLLEGE, IDENT} pairs together.
  187.  
  188.                     Andy
  189.  
  190. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  191. End of returned mail
  192.  
  193. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  194. End of returned mail
  195.  
  196. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  197. End of returned mail
  198.  
  199. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  200. End of returned mail
  201.