Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-03-2010
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 23
defcon1_es Va por buen camino
En ese caso, deberías recuperar el valor mínimo del campo U.AUTORES_NOMBRE

Prueba con esta select, a ver que te muestra.

Código SQL [-]
SELECT distinct A.CODIGO, A.NOMBRE_ARTICULO, A.CODIGO_EAN, min(U.AUTORES_NOMBRE)
FROM dbo.ARTICULOS A
 LEFT JOIN dbo.TITULO_AUTOR T ON A.CODIGO=T.TITULOS_CODIGO
INNER JOIN dbo.AUTORES U ON T.AUTORES_CODIGO=U.AUTORES_CODIGO
GROUP BY A.CODIGO, A.NOMBRE_ARTICULO, A.CODIGO_EAN
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #2  
Antiguo 25-03-2010
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Poder: 0
Softweb Va por buen camino
Cita:
Empezado por defcon1_es Ver Mensaje
En ese caso, deberías recuperar el valor mínimo del campo U.AUTORES_NOMBRE

Prueba con esta select, a ver que te muestra.

Código SQL [-]SELECT distinct A.CODIGO, A.NOMBRE_ARTICULO, A.CODIGO_EAN, min(U.AUTORES_NOMBRE) FROM dbo.ARTICULOS A LEFT JOIN dbo.TITULO_AUTOR T ON A.CODIGO=T.TITULOS_CODIGO INNER JOIN dbo.AUTORES U ON T.AUTORES_CODIGO=U.AUTORES_CODIGO GROUP BY A.CODIGO, A.NOMBRE_ARTICULO, A.CODIGO_EAN
Gracias defcon1_es pero no me es valido ya que la consulta es mas grande y complicada, yo la simplifique para que se entendiera mejor la pregunta.

La consulta real es esta.

Código SQL [-]
SELECT distinct A.ARTICULOS_REFERENCIA_PROVEEDOR, A.ARTICULOS_NOMBRE_ARTICULO, ARTICULOS_CODIGO_EAN, 
U.AUTORES_NOMBRE), A.ARTICULOS_FECHA_CREACION, A.ARTICULOS_PRECIO_VENTA_CON_IVA, A.ARTICULOS_SITUACION, 
A.ARTICULOS_CODIGO, P.PROVEE_NOMBRE, S.ARTICULOS_EXIS_INI_FIRME, E.EDITORIALES_NOMBRE_CORTO, 
S.ARTICULOS_EXIS_INI_DEPOSITO, S.ARTICULOS_EXIS_ACT_FIRME, S.ARTICULOS_EXIS_ACT_DEPOSITO, 
S.ARTICULOS_UNIDAD_PEND_RECIBIR, S.ARTICULOS_UNIDAD_PEND_SERVIR, S.ARTICULOS_UNIDAD_EXAMEN, 
FF.FAMILIAS_DENOMINACION AS Seccion, M.MATERIAS_DENOMINACION AS Materia, ARTICULOS_SITUACION AS ESTADO, E.EDITORIALES_CODIGO
  FROM dbo.ARTICULOS A
  INNER JOIN dbo.ALMACEN_STOCK S ON A.ARTICULOS_CODIGO=S.ARTICULOS_CODIGO 
     Format('AND S.COMPANIA_CODIGO=%d AND S.CENTRO_CODIGO=%d',[BBO_COMPANIA_CODIGO,V_CENTRO])
 INNER JOIN dbo.TITULOS TI ON A.ARTICULOS_CODIGO = TI.TITULOS_CODIGO'
  LEFT JOIN dbo.EDITORIALES E ON TI.TITULOS_EDITORIAL_CODIGO = E.EDITORIALES_CODIGO
  LEFT JOIN dbo.TITULO_AUTOR T ON A.ARTICULOS_CODIGO=T.TITULO_AUTOR_TITULOS_CODIGO
  INNER JOIN dbo.AUTORES U ON T.TITULO_AUTOR_AUTORES_CODIGO=U.AUTORES_CODIGO

  FULL JOIN dbo.FAMILIAS FF ON (FF.FAMILIAS_CODIGO=A.ARTICULOS_FAMILIA AND
  FF.FAMILIAS_TIPO_ARTICULO = A.ARTICULOS_TIPO_ARTICULO)
  FULL JOIN dbo.TITULOS_MATERIAS X ON X.TITMAT_TITULOS_CODIGO=A.ARTICULOS_CODIGO
  FULL JOIN dbo.MATERIAS M ON M.MATERIAS_CODIGO=X.TITMAT_MATERIAS_CODIGO
  FULL JOIN dbo.PROVEEDORES P ON A.ARTICULOS_CODIGO_ULT_PROVEEDOR=P.PROVEE_CODIGO
 ORDER BY A.ARTICULOS_REFERENCIA_PROVEEDOR, A.ARTICULOS_NOMBRE_ARTICULO, ARTICULOS_CODIGO_EAN, 
  U.AUTORES_NOMBRE, A.ARTICULOS_FECHA_CREACION, A.ARTICULOS_PRECIO_VENTA_CON_IVA, 
  A.ARTICULOS_CODIGO, P.PROVEE_NOMBRE, S.ARTICULOS_EXIS_INI_FIRME, 
  S.ARTICULOS_EXIS_INI_DEPOSITO, S.ARTICULOS_EXIS_ACT_FIRME, S.ARTICULOS_EXIS_ACT_DEPOSITO, 
  S.ARTICULOS_UNIDAD_PEND_RECIBIR, S.ARTICULOS_UNIDAD_PEND_SERVIR, S.ARTICULOS_UNIDAD_EXAMEN, 
  FF.FAMILIAS_DENOMINACION, M.MATERIAS_DENOMINACION, ARTICULOS_SITUACION

La consulta es de un listado de libros de una librería.


Gracias y saludos
Responder Con Cita
  #3  
Antiguo 26-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 24
Caro Va por buen camino
Hola SoftWeb, no he mirado la ultima consulta que has puesto, sobre la primera, tu consulta debería ser mas o menos así:

Código SQL [-]
SELECT A.CODIGO, A.NOMBRE_ARTICULO, A.CODIGO_EAN, U.AUTORES_NOMBRE
FROM ARTICULOS A
INNER JOIN (SELECT Min(AUTORES_CODIGO) as AUTORES_CODIGO, TITULOS_CODIGO
           FROM TITULO_AUTOR GROUP BY TITULOS_CODIGO) T ON A.CODIGO=T.TITULOS_CODIGO
INNER JOIN AUTORES U ON T.AUTORES_CODIGO=U.AUTORES_CODIGO

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 27-03-2010
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Poder: 0
Softweb Va por buen camino
Muchas gracias por la respuesta, me a sorprendido pues no sabia que se podian poner los JOIN tan enrevesados.;-)

Aunque cuando lo implemento me da un error.

"El prefijo de la columna T no coincide con un nombre de tabla o con un alias usado en la consulta."

Tu codigo despues de ponerle los nombres reales de los campos lo e puesto asin.

Código SQL [-]
 INNER JOIN (SELECT Min(U.AUTORES_CODIGO) as AUTORES_CODIGO, T.TITULO_AUTOR_TITULOS_CODIGO
           FROM dbo.TITULO_AUTOR GROUP BY T.TITULO_AUTOR_TITULOS_CODIGO) T ON A.ARTICULOS_CODIGO=T.TITULO_AUTOR_TITULOS_CODIGO 
   INNER JOIN dbo.AUTORES U ON T.TITULO_AUTOR_AUTORES_CODIGO=U.AUTORES_CODIGO

Parese que es en el tramo
Código SQL [-]
FROM dbo.TITULO_AUTOR GROUP BY T.TITULO_AUTOR_TITULOS_CODIGO) T ON  A.ARTICULOS_CODIGO=T.TITULO_AUTOR_TITULOS_CODIGO

yo lo e cambiado por probar por
Código SQL [-]
FROM dbo.TITULO_AUTOR T GROUP BY T.TITULO_AUTOR_TITULOS_CODIGO) ON  A.ARTICULOS_CODIGO=T.TITULO_AUTOR_TITULOS_CODIGO

pero entonce me dice que hay un error cerca del "ON".

tienes idea de que va el asunto.

Saludos y gracias anticipadas.
Responder Con Cita
  #5  
Antiguo 29-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 24
Caro Va por buen camino
Hola SoftWeb, no he podido responderte antes porque despues de enviarte mi respuesta no me volvi a conectar al foro hasta hoy día.

Sobre tu pregunta, el error es porque no le estas dando un alias a tu tabla dbo.titulo_autor dentro la subconsulta, la que tiene el alias T es la subconsulta que esta dentro de los paréntesis.

Código SQL [-]
INNER JOIN (SELECT Min(AUTORES_CODIGO) as AUTORES_CODIGO, TITULOS_CODIGO
           FROM TITULO_AUTOR GROUP BY TITULOS_CODIGO) T ON A.CODIGO=T.TITULOS_CODIGO

Otro error es que estas utilizando el Alias U dentro de la subconsulta que tampoco existe, sino que esta fuera en el otro inner join

Cita:
Empezado por Softweb Ver Mensaje
Código SQL [-]

INNER JOIN (SELECT Min(U.AUTORES_CODIGO) as AUTORES_CODIGO, T.TITULO_AUTOR_TITULOS_CODIGO
FROM dbo.TITULO_AUTOR GROUP BY T.TITULO_AUTOR_TITULOS_CODIGO) T ON A.ARTICULOS_CODIGO=T.TITULO_AUTOR_TITULOS_CODIGO
INNER JOIN dbo.AUTORES U ON T.TITULO_AUTOR_AUTORES_CODIGO=U.AUTORES_CODIGO

No te olvides que el campo U.AUTORES_CODIGO osea solo AUTORES_CODIGO debe pertenecer a tu tabla TITULO_AUTOR que en si es el campo que se relaciona con tu tabla AUTORES. Tu consulta debería quedar así:

Código SQL [-]
SELECT A.CODIGO, A.NOMBRE_ARTICULO, A.CODIGO_EAN, U.AUTORES_NOMBRE
FROM dbo.ARTICULOS A
INNER JOIN (SELECT Min(TITULO_AUTOR_AUTORES_CODIGO) as TITULO_AUTOR_AUTORES_CODIGO, TITULO_AUTOR_TITULOS_CODIGO
           FROM dbo.TITULO_AUTOR GROUP BY TITULO_AUTOR_TITULOS_CODIGO) T ON A.ARTICULOS_CODIGO=T.TITULO_AUTOR_TITULOS_CODIGO 
   INNER JOIN dbo.AUTORES U ON T.TITULO_AUTOR_AUTORES_CODIGO=U.AUTORES_CODIGO

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 30-03-2010
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Poder: 0
Softweb Va por buen camino
Muchas gracias Caro

De tanto mirar el código no veía lo mas elemental, me estoy asiendo viejo y se me despistan la neuronas.

Funciona perfectamente, eres un maestro del SQL.

Saludos y gracias.
Responder Con Cita
  #7  
Antiguo 30-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 20
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por Softweb Ver Mensaje

... eres un maestro del SQL.
Je,je,je
Solo aclarar que Caro es mujer y no hombre.

Amiga Caro quizás deberías modificar la palabra "Moderador" por "Moderadora"..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
usando LEFT JOIN o RIGHT JOIN alcides SQL 8 03-05-2007 17:35:46
left join e inner join duda Patricio SQL 0 26-04-2007 22:06:43
Duplicados con LEFT OUTER JOIN Cabanyaler MS SQL Server 11 17-11-2005 08:46:23
LEFT INNER JOIN & RIGHT INNER JOIN Cabanyaler MS SQL Server 11 07-11-2005 18:09:58
LEFT OUTER JOIN e INNER JOIN Juntos alcides SQL 3 08-07-2005 18:06:27


La franja horaria es GMT +2. Ahora son las 15:21:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi