Как запросить сумку с Nhibernate - PullRequest
0 голосов
/ 20 декабря 2010

Мне нужно получить публикации, в которых в списке стран нет страны (исследование IsoCode2)

Запрос sql:

select * from pub_head ph
where not exists
(select 1 from pub_head_forbidden_country phfc , country c
                where phfc.pub_head_id = ph.pub_head_id 
                and phfc.country_id = c.country_id 
                and c.iso_code2 = 'CA');

И модель:

<class name="Publication" table="PUB_HEAD">

  <id name="Id" column="PUB_HEAD_ID">
   <generator class="native">
    <param name="sequence">SEQ_PUB_HEAD</param>
   </generator>
  </id>

  <idbag name="Countries" table="PUB_HEAD_COUNTRY" lazy="true">
   <collection-id column="PUB_HEAD_COUNTRY_ID">
    <generator class="native">
     <param name="sequence">SEQ_PUB_HEAD_COUNTRY</param>
    </generator>
   </collection-id>

   <key column ="PUB_HEAD_ID"  />
   <many-to-many class="Model.Referential.Country, Model" column="COUNTRY_ID"/>
  </idbag>
</class>

<class name="Country" table="Country">
  <id name="Id" column="COUNTRY_ID">
   <generator class="native">
   </generator>
  </id>
  <property name="Name">
   <column name="NAME"></column>
  </property>
  <property name="IsoCode2">
   <column name="ISO_CODE2"></column>
  </property>
  <property name="IsoCode3">
   <column name="ISO_CODE3"></column>
  </property>

 </class>

Я начал с SubQueries, но мне не удалось это сделать.

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 декабря 2010

Sql может быть таким же

SELECT * FROM pub_head ph
WHERE ph.pub_head_id not IN (
  SELECT phfc.pub_head_id
  FROM pub_head_forbidden_country phfc
    INNER JOIN country  c ON phfc.country_id = c.country_id
  WHERE c.iso_code2 = 'CA'
)
0 голосов
/ 20 декабря 2010

Аллергия на присоединения?Этот SQL очень трудно понять.

Означает ли это?

SELECT *
FROM pub_head
WHERE id not IN (
  SELECT phfc.pub_head_id
  FROM pub_head_forbidden_country as phfc
    INNER JOIN country AS c ON phfc.country_id = c.country_id
  WHERE c.iso_code2 = 'CA'
)

[Публикация в качестве ответа, поскольку этот SQL будет ужасен в комментарии.]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...