title: Multiple rows returned with unique key?
body: <p>Given those 3 simple SQLAlchemy models:</p>
  
  <pre><code>class Customer(ModelBase):
      __tablename__ = 'customers'
  
      id = sa.Column(sa.Integer, primary_key=True)
      uid = sa.Column(sa.Unicode, nullable=False, unique=True)
  
  
  class Handset(ModelBase):
      __tablename__ = 'handsets'
  
      id = sa.Column(sa.Integer, primary_key=True)
      imei = sa.Column(sa.Unicode(15), nullable=False, unique=True)
  
  
  class Channel(ModelBase):
      __tablename__ = 'channels'
  
      id = sa.Column(sa.Integer, primary_key=True)
  
      customer_id = sa.Column(sa.ForeignKey(Customer.id), nullable=False)
      handset_id = sa.Column(sa.ForeignKey(Handset.id), nullable=False)
  
      customer = relationship(Customer, backref='channels', lazy='joined')
      handset = relationship(Handset, backref='channels', lazy='joined')
  
  
      __table_args__ = (
          sa.Index('uk_channels_customer_handset',
                   customer_id, handset_id,
                   unique=True),
      )
  </code></pre>
  
  <p>I don't understand why this query:</p>
  
  <pre><code>session.query(Channel).filter(Handset.imei == '1234', Customer.uid == 'test').one_or_none()
  </code></pre>
  
  <p>Throws <code>multiple rows found</code> execption, when there are multiple <code>Channel</code>s associated with the <code>handset_id</code>, but with distinct <code>customer_id</code> while this query, works OK:</p>
  
  <pre><code>c = aliased(Customer)
  h = aliased(Handset)
  session.query(Channel).enable_eagerloads(False).join(c).join(h).filter(
      c.uid == 'test', h.imei == '1234',
  ).one_or_none()
  </code></pre>
  
  <p>How can I load channel with eager loading of customer &amp; handset?</p>