Es que me genera mal la sentencia SQL con el hql que me has pasado. Me
da syntax error el motor de base de datos:

select autor0_.[Id] as Id1_4_, autor0_.[FechaNacimiento] as
FechaNac2_4_, autor0_.[Nombre] as Nombre3_4_
from [dbo].[Autores] autor0_ where autor0_.[Id] not in
(select . from [dbo].[Libros] libro1_, dbo.[LibrosAutores] autores2_,
[dbo].[Autores] autor3_ where libro1_.[Id]=autores2_.[IdLibro] and
autores2_.[IdAutor]=autor3_.[Id] and libro1_.[Id]=@p0)
;@p0 = 98318 [Type: Int64 (0)]

¿Has visto el select . from...? Curioso...

En cambio, he hecho esto: from autor in Autor where not :idBook in
(select libro.ID from autor.Libros libro)

Y me genera este SQL que sí me da un resultado correcto pero creo que
es poco eficiente la consulta y mal hecha:

 select autor0_.[Id] as Id1_4_, autor0_.[FechaNacimiento] as
FechaNac2_4_, autor0_.[Nombre] as Nombre3_4_
 from [dbo].[Autores] autor0_ where @p0 not in
 (select libro2_.[Id] from dbo.[LibrosAutores] libros1_, [dbo].
[Libros] libro2_
 where autor0_.[Id]=libros1_.[IdAutor] and libros1_.[IdLibro]=libro2_.
[Id])

Pues eso, al menos ya tengo algo...


On 23 mar, 16:01, José F. Romaniello <[email protected]> wrote:
> si me mostraras por que fallan las dos formas que te dije, me sería más
> fácil
>
> El 23 de marzo de 2011 11:37, Juan Cuello <[email protected]> escribió:
>
>
>
>
>
>
>
> > Ni una ni otra :P
>
> > Seguiré mirando,
>
> > Gracias
>
> > On 23 mar, 13:38, José F. Romaniello <[email protected]> wrote:
> > > Creo que en Hql podria funcionar algo así;
> > > from Autor a
> > > where not a in (select l.Autores from Libro l where l.id = @libro)
>
> > > Y en linq algo así
>
> > > from a in session.Query<Autor>
> > > from l in session.Query<Libro>()
> > > where l.id = .. && !l.Autores.Contains(a)
> > > select a;
>
> > > El 23/03/11, Juan Cuello <[email protected]> escribió:
>
> > > > Hola buenas,
>
> > > > Estoy haciendo una consulta HQL y queda patente que no sirvo para
> > > > esto.
>
> > > > Tengo una relación many-to-many entre Libros y Autores, y quiero hacer
> > > > una consulta que me devuelva los autores que no están relacionados con
> > > > un libro.
>
> > > > Mi primera idea ha sido con HQL: from c in Autor where :idBook not in
> > > > (c.Libros) y me da un sintax error en la generación de SQL
>
> > > > En LINQ no tengo ni idea de cómo hacerlo.
>
> > > > Ayuda please
>
> > > > --
> > > > Para escribir al Grupo, hágalo a esta dirección:
> > > > [email protected]
> > > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> > > --
> > > Enviado desde mi dispositivo móvil
>
> > --
> > Para escribir al Grupo, hágalo a esta dirección:
> > [email protected]
> > Para más, visite:http://groups.google.com/group/NHibernate-Hispano

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a