Problema en consulta

01/02/2006 - 14:30 por Penta | Informe spam
Estimados.
Tengo una consulta simple que me devuelve 100 registros, pues bien a
dicha consulta necesito agregarlo una columna extra, el problema es que
en la tabla que esta el registro puede estar N veces, de esas N veces
yo necesito mostrar dicha columna o dato si asi se desea solo cuando el
codigo buscado sea = 1 , dado que esta N veces los registros me
aumentan considerablemente digamos unas 4 veces mas.

Ejemplo :

Tengo :

1 PROVEEDOR , aca deseo agregar la columna pago, y esta esta en la
tabla PAGOS, donde el codigo 1 esta :

1 Contado
2 Credito
3 Tarjeta

Bueno necesito que quede asi :
1 PROVEEDOR Contado

ya que deseo que me muestre esa columna cuando sea Contado, pero si no
se encuentra dicho dato quiero de todas formas mis 100 registros.

Gracias por su ayuda.

Preguntas similare

Leer las respuestas

#1 Guillermo Roldan
01/02/2006 - 14:56 | Informe spam
Hola Penta,

Te hace falta realizar una consulta del tipo LEFT OUTER JOIN, como mucho,
realizado entre una tabla y una "tabla derivada".

Si conoces el diseñador de consultas de Microsoft Acces, resulta muy cómo
utilizar el Administrador Corporativo para crear una vista en plan "gráfico",
es decir, añadiendo las dos tablas, relacionándolas, especificando en la
relación eso "dame todos los registros de esta tabla.. y los que coincidan de
esta otra", y seleccionando las columnas deseadas, así como condiciones
where, group by, having y order by... como ves, muy completo.

A contienuación, puedes "copiar y pegar" el código que te genera, y ya si
eso lo tabulas a tu gusto y lo incorporas en tu procedure, vista, report,
aplicación o lo que fuere.

No obstante, te adelanto que el código que buscas tiene pinta (por lo que me
ha parecido entenderte) de ser algo así:

SELECT dbo.Employees.EmployeeID, dbo.EmployeeTerritories.TerritoryID
FROM dbo.Employees LEFT OUTER JOIN
dbo.EmployeeTerritories ON dbo.Employees.EmployeeID =
dbo.EmployeeTerritories.EmployeeID

A esta consulta, la puedes añadir una cláusula WHERE, o bien, utilizar en
vez de dos tablas, una tabla y una "tabla derivada", es decir, una tabla y
una consulta.

Espero esto te pueda ayudar.

Saludos,
Guillermo

"Penta" escribió:

Estimados.
Tengo una consulta simple que me devuelve 100 registros, pues bien a
dicha consulta necesito agregarlo una columna extra, el problema es que
en la tabla que esta el registro puede estar N veces, de esas N veces
yo necesito mostrar dicha columna o dato si asi se desea solo cuando el
codigo buscado sea = 1 , dado que esta N veces los registros me
aumentan considerablemente digamos unas 4 veces mas.

Ejemplo :

Tengo :

1 PROVEEDOR , aca deseo agregar la columna pago, y esta esta en la
tabla PAGOS, donde el codigo 1 esta :

1 Contado
2 Credito
3 Tarjeta

Bueno necesito que quede asi :
1 PROVEEDOR Contado

ya que deseo que me muestre esa columna cuando sea Contado, pero si no
se encuentra dicho dato quiero de todas formas mis 100 registros.

Gracias por su ayuda.


Respuesta Responder a este mensaje
#2 Penta
01/02/2006 - 15:07 | Informe spam
Hola Guillermo.
Gracias por contestar.
Mi problema es que en la tabla empleados tengo 2 registro unicos ( A y
B ) y en la EmployeeTerritories tengo 5 registros por empleado.

Necesito una consulta que me entregue los 2 registros unicos con una
columna que tiene la tabla EmployeeTerritories pero que me muestre
dicha columna siempre y cuando la columna EmployeeTerritories.EJEMPLO 5

si el 2do registro , o sea el B no tiene EmployeeTerritories.EJEMPLO 5 quiero que lo muestre vacio.
Respuesta Responder a este mensaje
#3 Alejandro Mesa
01/02/2006 - 15:52 | Informe spam
Penta,

Haz lo que dice Guillermo, usa un "left join" y asegurate de incluir en el
filtro la condicion para la columna [ejemplo].

SELECT a.EmployeeID, b.TerritoryID
FROM
dbo.Employees as a
LEFT OUTER JOIN
dbo.EmployeeTerritories as b
ON a.EmployeeID = b.EmployeeID and b.EJEMPLO = 5
go


AMB


"Penta" wrote:

Hola Guillermo.
Gracias por contestar.
Mi problema es que en la tabla empleados tengo 2 registro unicos ( A y
B ) y en la EmployeeTerritories tengo 5 registros por empleado.

Necesito una consulta que me entregue los 2 registros unicos con una
columna que tiene la tabla EmployeeTerritories pero que me muestre
dicha columna siempre y cuando la columna EmployeeTerritories.EJEMPLO > 5

si el 2do registro , o sea el B no tiene EmployeeTerritories.EJEMPLO > 5 quiero que lo muestre vacio.


Respuesta Responder a este mensaje
#4 Penta
01/02/2006 - 16:30 | Informe spam
Muchas Gracias.
Es lo mismo que hacer esto ?


a.EmployeeID *= b.EmployeeID and b.EJEMPLO = 5

Notese el asterisco.


Alejandro Mesa wrote:
Penta,

Haz lo que dice Guillermo, usa un "left join" y asegurate de incluir en el
filtro la condicion para la columna [ejemplo].

SELECT a.EmployeeID, b.TerritoryID
FROM
dbo.Employees as a
LEFT OUTER JOIN
dbo.EmployeeTerritories as b
ON a.EmployeeID = b.EmployeeID and b.EJEMPLO = 5
go


AMB


"Penta" wrote:

> Hola Guillermo.
> Gracias por contestar.
> Mi problema es que en la tabla empleados tengo 2 registro unicos ( A y
> B ) y en la EmployeeTerritories tengo 5 registros por empleado.
>
> Necesito una consulta que me entregue los 2 registros unicos con una
> columna que tiene la tabla EmployeeTerritories pero que me muestre
> dicha columna siempre y cuando la columna EmployeeTerritories.EJEMPLO > > 5
>
> si el 2do registro , o sea el B no tiene EmployeeTerritories.EJEMPLO > > 5 quiero que lo muestre vacio.
>
>
Respuesta Responder a este mensaje
#5 Alejandro Mesa
01/02/2006 - 17:23 | Informe spam
Penta,

Es lo mismo que hacer esto ?


a.EmployeeID *= b.EmployeeID and b.EJEMPLO = 5



Ese es el viejo estilo. El nuevo estilo es compatible con ANSI y
posiblemente Microsoft no lo use mas a partir de la version 2005 si no es que
mantienes la compatibilidad de la db en 80 o menor. Te recomiendo uses el
nuevo.


AMB

"Penta" wrote:


Muchas Gracias.
Es lo mismo que hacer esto ?


a.EmployeeID *= b.EmployeeID and b.EJEMPLO = 5

Notese el asterisco.


Alejandro Mesa wrote:
> Penta,
>
> Haz lo que dice Guillermo, usa un "left join" y asegurate de incluir en el
> filtro la condicion para la columna [ejemplo].
>
> SELECT a.EmployeeID, b.TerritoryID
> FROM
> dbo.Employees as a
> LEFT OUTER JOIN
> dbo.EmployeeTerritories as b
> ON a.EmployeeID = b.EmployeeID and b.EJEMPLO = 5
> go
>
>
> AMB
>
>
> "Penta" wrote:
>
> > Hola Guillermo.
> > Gracias por contestar.
> > Mi problema es que en la tabla empleados tengo 2 registro unicos ( A y
> > B ) y en la EmployeeTerritories tengo 5 registros por empleado.
> >
> > Necesito una consulta que me entregue los 2 registros unicos con una
> > columna que tiene la tabla EmployeeTerritories pero que me muestre
> > dicha columna siempre y cuando la columna EmployeeTerritories.EJEMPLO > > > 5
> >
> > si el 2do registro , o sea el B no tiene EmployeeTerritories.EJEMPLO > > > 5 quiero que lo muestre vacio.
> >
> >


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida