Ayuda con Select

12/01/2005 - 17:27 por Carlos | Informe spam
Cordial Saludo.
Tengo el siguiente select:

select art.*,sec.SecNombre,dep.DepNombre from Articulo art,
Seccion sec,Departamento dep WHERE sec.SecNombre LIKE 'botiquin%' and
art.ArtSeccion=sec.SecCodigo and sec.SecDepaCodi=dep.DepCodigo

Me sale bien, con 304 Registros, pero ahora debo relacionar otra tabla
llamada Lineas y en la tabla articulos tiene un solo registro asociado a
Lineas

select art.*,sec.SecNombre,dep.DepNombre,lin.LineaNombre from Articulo
art,Seccion sec,Departamento dep,Lineas lin WHERE sec.SecNombre LIKE
'botiquin%' and art.ArtSeccion=sec.SecCodigo and
sec.SecDepaCodi=dep.DepCodigo and
art.ArtCodiLinea=lin.LineaCodigo

Agregandole la tabla Lineas al select anterior me sale un solo registro.

Necesito esto para poner todos los datos en una grilla de Visual basic 6

Alguien puede ayudarme a hacer ese select??

Agradezco la ayuda y sugerencias que me puedan brindar.

Preguntas similare

Leer las respuestas

#1 Manuel Vera
12/01/2005 - 18:45 | Informe spam
Debes hacer un LEFT JOIN o RIGHT JOIN que no es mas que forzar los registros
de uno u otro lado para que aparescan en el resultado.

Prueba con:

SELECT art.*,sec.SecNombre,dep.DepNombre,lin.LineaNombre
FROM Articulo art,Seccion sec,Departamento dep,Lineas lin
WHERE sec.SecNombre LIKE 'botiquin%'
and art.ArtSeccion=sec.SecCodigo
and sec.SecDepaCodi=dep.DepCodigo
and art.ArtCodiLinea*=lin.LineaCodigo

Aqui en la ultima linea, el operador *= es un LEFT JOIN que obliga a mostrar
TODOS los registros de ART y solo aquellos que coincidan en LIN.
En VB es posible que tengas problemas al cargar los datos, pues LineaNombre
será NULL cuando no existe el regitro. Para solucionarlo has esto otro:

SELECT art.*,sec.SecNombre,dep.DepNombre, ISNULL( lin.LineaNombre , '' ) AS
LineaNombre

Salu2
MV


"Carlos" wrote in message
news:
Cordial Saludo.
Tengo el siguiente select:

select art.*,sec.SecNombre,dep.DepNombre from Articulo art,
Seccion sec,Departamento dep WHERE sec.SecNombre LIKE 'botiquin%' and
art.ArtSeccion=sec.SecCodigo and sec.SecDepaCodi=dep.DepCodigo

Me sale bien, con 304 Registros, pero ahora debo relacionar otra tabla
llamada Lineas y en la tabla articulos tiene un solo registro asociado a
Lineas

select art.*,sec.SecNombre,dep.DepNombre,lin.LineaNombre from Articulo
art,Seccion sec,Departamento dep,Lineas lin WHERE sec.SecNombre LIKE
'botiquin%' and art.ArtSeccion=sec.SecCodigo and
sec.SecDepaCodi=dep.DepCodigo and
art.ArtCodiLinea=lin.LineaCodigo

Agregandole la tabla Lineas al select anterior me sale un solo registro.

Necesito esto para poner todos los datos en una grilla de Visual basic 6

Alguien puede ayudarme a hacer ese select??

Agradezco la ayuda y sugerencias que me puedan brindar.
Respuesta Responder a este mensaje
#2 ulises
12/01/2005 - 19:10 | Informe spam
Es preferible usar la indicación de JOIN en el FROM que en
el WHERE, en primer lugar porque los outer join podrían dar
resultados diferentes al esperado y en segundo lugar porque
los operadores *= ó =* solo se mantienen por
compatibilidad y podrían no estar en futuras versiones de
SQL Server.

SELECT art.*,sec.SecNombre,dep.DepNombre,lin.LineaNombre
FROM Articulo art
join Seccion sec on art.ArtSeccion=sec.SecCodigo
join Departamento dep on sec.SecDepaCodi=dep.DepCodigo
left join Lineas lin on art.ArtCodiLinea*=lin.LineaCodigo
WHERE sec.SecNombre LIKE 'botiquin%'

Saludos,
Ulises

Debes hacer un LEFT JOIN o RIGHT JOIN que no es mas que


forzar los registros
de uno u otro lado para que aparescan en el resultado.

Prueba con:

SELECT art.*,sec.SecNombre,dep.DepNombre,lin.LineaNombre
FROM Articulo art,Seccion sec,Departamento dep,Lineas lin
WHERE sec.SecNombre LIKE 'botiquin%'
and art.ArtSeccion=sec.SecCodigo
and sec.SecDepaCodi=dep.DepCodigo
and art.ArtCodiLinea*=lin.LineaCodigo

Aqui en la ultima linea, el operador *= es un LEFT JOIN


que obliga a mostrar
TODOS los registros de ART y solo aquellos que coincidan


en LIN.
En VB es posible que tengas problemas al cargar los datos,


pues LineaNombre
será NULL cuando no existe el regitro. Para solucionarlo


has esto otro:

SELECT art.*,sec.SecNombre,dep.DepNombre, ISNULL(


lin.LineaNombre , '' ) AS
LineaNombre

Salu2
MV


"Carlos" wrote in message
news:
Cordial Saludo.
Tengo el siguiente select:

select art.*,sec.SecNombre,dep.DepNombre from Articulo art,
Seccion sec,Departamento dep WHERE sec.SecNombre LIKE




'botiquin%' and
art.ArtSeccion=sec.SecCodigo and




sec.SecDepaCodi=dep.DepCodigo

Me sale bien, con 304 Registros, pero ahora debo




relacionar otra tabla
llamada Lineas y en la tabla articulos tiene un solo




registro asociado a
Lineas

select art.*,sec.SecNombre,dep.DepNombre,lin.LineaNombre




from Articulo
art,Seccion sec,Departamento dep,Lineas lin WHERE




sec.SecNombre LIKE
'botiquin%' and art.ArtSeccion=sec.SecCodigo and
sec.SecDepaCodi=dep.DepCodigo and
art.ArtCodiLinea=lin.LineaCodigo

Agregandole la tabla Lineas al select anterior me sale




un solo registro.

Necesito esto para poner todos los datos en una grilla




de Visual basic 6

Alguien puede ayudarme a hacer ese select??

Agradezco la ayuda y sugerencias que me puedan brindar.




.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida