<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: WORK AROUND FOR CARTESIAN JOIN in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128870#M35170</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To me, the question doesn't make much sense.&amp;nbsp; You appear to want a Cartesian Join as the result.&amp;nbsp; To do it in SQL, you've done it fine.&amp;nbsp;&amp;nbsp; You can simulate a Cartesian Join with a data step, but you are still doing a Cartesian join and it will still take multiple passes of the data.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 24 Sep 2012 14:33:27 GMT</pubDate>
    <dc:creator>Doc_Duke</dc:creator>
    <dc:date>2012-09-24T14:33:27Z</dc:date>
    <item>
      <title>WORK AROUND FOR CARTESIAN JOIN</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128869#M35169</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to create a data set with a cartesian join,but i want to do with out doing cartesian join&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For ex;&lt;/P&gt;&lt;P&gt;data Names;&lt;/P&gt;&lt;P&gt;input person $;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;Jason&lt;/P&gt;&lt;P&gt;Jim&lt;/P&gt;&lt;P&gt;Richard&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data Tests;&lt;/P&gt;&lt;P&gt;input test $;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;TB&lt;/P&gt;&lt;P&gt;BL&lt;/P&gt;&lt;P&gt;CB&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to create a data set called Person_tests which should indicate all the three tests for each person&lt;/P&gt;&lt;P&gt;i.e like this&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jason&amp;nbsp; TB&lt;/P&gt;&lt;P&gt;Jason BL&lt;/P&gt;&lt;P&gt;Jason CB&lt;/P&gt;&lt;P&gt;Jim TB&lt;/P&gt;&lt;P&gt;Jim BL&lt;/P&gt;&lt;P&gt;Jim CB&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please let me know how to achieve this with out using cartesian join&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT;&lt;/P&gt;&lt;P&gt;CREATE TABLE PERSON_TEST AS&lt;/P&gt;&lt;P&gt;SELECT table1.*,table2.test&lt;/P&gt;&lt;P&gt;FROM Names AS table1,TESTS As table2 ;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i run this it will show &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: The execution of this query involves performing one or more Cartesian product joins that can not be optimized.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i want to achieve the results with out Cartesian join.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2012 14:25:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128869#M35169</guid>
      <dc:creator>JasonNC</dc:creator>
      <dc:date>2012-09-24T14:25:58Z</dc:date>
    </item>
    <item>
      <title>Re: WORK AROUND FOR CARTESIAN JOIN</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128870#M35170</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To me, the question doesn't make much sense.&amp;nbsp; You appear to want a Cartesian Join as the result.&amp;nbsp; To do it in SQL, you've done it fine.&amp;nbsp;&amp;nbsp; You can simulate a Cartesian Join with a data step, but you are still doing a Cartesian join and it will still take multiple passes of the data.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2012 14:33:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128870#M35170</guid>
      <dc:creator>Doc_Duke</dc:creator>
      <dc:date>2012-09-24T14:33:27Z</dc:date>
    </item>
    <item>
      <title>Re: WORK AROUND FOR CARTESIAN JOIN</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128871#M35171</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It seems to me that what you want IS Cartesian Product.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2012 14:33:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128871#M35171</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-09-24T14:33:48Z</dc:date>
    </item>
    <item>
      <title>Re: WORK AROUND FOR CARTESIAN JOIN</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128872#M35172</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi ... maybe a data step (does the same thing SQL does, just without&amp;nbsp; the note in the LOG) ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;data person_test;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;set names;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;do _n_=1 to lastrec;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; set tests nobs=lastrec point=_n_;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; output;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;end;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or you could put TESTS into memory (array or hash table) rather than rereading the data set for each observation in NAMES ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;data person_test;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;array t(3) $2 _temporary_;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;do _n_=1 to 3;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; set tests;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; t(_n_) = test;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;end;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;do until(done);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; set names end=done;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;do _n_=1 to 3;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; test = t(_n_);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; output;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;end;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;end;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;stop;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2012 14:59:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128872#M35172</guid>
      <dc:creator>MikeZdeb</dc:creator>
      <dc:date>2012-09-24T14:59:18Z</dc:date>
    </item>
    <item>
      <title>Re: WORK AROUND FOR CARTESIAN JOIN</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128873#M35173</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My intention was to avoid messages in the log.I did it using Arrays.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2012 15:35:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128873#M35173</guid>
      <dc:creator>JasonNC</dc:creator>
      <dc:date>2012-09-24T15:35:04Z</dc:date>
    </item>
    <item>
      <title>Re: WORK AROUND FOR CARTESIAN JOIN</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128874#M35174</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yup i did it in the same way.I did it after i posted the question.But any ways thx for your help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2012 15:36:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128874#M35174</guid>
      <dc:creator>JasonNC</dc:creator>
      <dc:date>2012-09-24T15:36:06Z</dc:date>
    </item>
    <item>
      <title>Re: WORK AROUND FOR CARTESIAN JOIN</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128875#M35175</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If it's the NOTE that's bothering you, just ignore it. It is VERY rare to actually want a cartesian join, and I can assure you from years of experience that it's fairly common to code one by accident, so SAS just warns you, in case it's not what you want. The code works fine, and produces the result you want, and there's no better way to do it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2012 15:58:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/WORK-AROUND-FOR-CARTESIAN-JOIN/m-p/128875#M35175</guid>
      <dc:creator>TomKari</dc:creator>
      <dc:date>2012-09-24T15:58:11Z</dc:date>
    </item>
  </channel>
</rss>

