title: Join leads to cartesian
body: <p>I have two DT's. I want to join DT1 with DT2 based on a column and take a column from DT2.</p>
  <pre><code>DT1:
           id  place
       1: id1    A
       2: id2    B
       3: id3    B
       4: id4    C
       5: id5    C
  
  DT2:
  
        place rank
     1:  A      3
     2:  B      2
     3:  C      1
     4:  D      3
     5:  E      2
  
  Expected:
  
           id  place  rank
       1: id1    A       3
       2: id2    B       2
       3: id3    B       2
       4: id4    C       1 
       5: id5    C       1 
  
  </code></pre>
  <p>Right now, I have tried -</p>
  <p>dt1[dt2, on=c('place'), nomatch=0]</p>
  <p>I thought this will map all the rows based on the value in <code>place</code> column and add the <code>rank</code> column to it.  But I get an error saying a cartesian has occured.</p>
  <pre><code>Error in vecseq(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__,  :
    Join results in &lt;&gt; rows; more than &lt;&gt; = nrow(x)+nrow(i). Check for duplicate key values in i each of which join to the same group in x over and over again. If that's ok, try by=.EACHI to run j for each group to avoid the large al
  location. If you are sure you wish to proceed, rerun with allow.cartesian=TRUE. Otherwise, please search for this error message in the FAQ, Wiki, Stack Overflow and data.table issue tracker for advice.
  </code></pre>
  <p>My first question is I dont understand how is a cartesian getting formed here ?
  Is it because my first DT has multiple rows for the same date ?</p>
  <p>Second - How do I achieve this correctly ?</p>
  <p>I have also tried a right outer join instead of an inner join. I get the same error.</p>