Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Mostrar registros que estan en la tabla, con columna adicional

Estas en el tema de Mostrar registros que estan en la tabla, con columna adicional en el foro de Mysql en Foros del Web. ¡¡Buen dia a todos !! Tengo un pequeño problema en un sistema que estoy haciendo, se trata de una venta de productos en el cual ...
  #1 (permalink)  
Antiguo 14/11/2013, 09:16
 
Fecha de Ingreso: mayo-2011
Mensajes: 7
Antigüedad: 12 años, 11 meses
Puntos: 0
Información Mostrar registros que estan en la tabla, con columna adicional

¡¡Buen dia a todos !!
Tengo un pequeño problema en un sistema que estoy haciendo, se trata de una venta de productos en el cual el administrador elige los productos que estaran disponibles para la venta.
Para esto tenemos tres tablas involucradas
Mercado: Permite que usuarios de una empresa hagan una compra en un rango de tiempo determinado.
productos : Donde estan los producto y sus caracteristicas
producto_rechazado: contiene los productos que no se podran vender a determinados Mercados, tiene dos columnas una con el id_producto y otra con id_mercado

El problema: cuando el administrador quiere una lista de todos los productos permitidos para un mercado indistintamente si esta rechazado o no me muestra solo los productos que no estan rechazados

La Consulta:
Código:
Select distinct producto.*, producto_rechazo.id_producto as rechazo from producto 
            left join producto_rechazo on producto_rechazo.id_producto=producto.id_producto
            where  producto_rechazo.id_mercado=".$id_mercado." || producto_rechazo.id_producto is null
,

Otros datos:* en las pruebas que estoy realizando el mercado id_mercado 9 es el unico que tiene produtos rechazados y en la lista los muestra todos, peero cuando trato de consultar todos los productos en el mercado 8 no me muestra los rechazados para el mercado 9
*la tabla productos no tiene realacion alguna con la tabla mercado
* entiendo porque sucede esto perfectamente
y es porque estoy relacionando la tabla con un left join por medio del id_producto y los productos estan en la lista de rechazo.
*la idea es que me muestre todos los productos y me traiga un valor null si no estan en la lista de producto_rechazo para un mercado especifico.
* insisto se cual es el problema con la consulta hecha por mi pero no se cual es la solución

si alguno sabe o tien idea de como ayudarme se lo agradezco de antemano,

nota :
*se que podria solucionarlo con dos consultas y un poco de programación per no es la idea.
*tengo la idea de crear una columna (durante la consulta)que me diga si el producto esta en la lista de rechazo para ese mercado.


GRACIAS !!!
  #2 (permalink)  
Antiguo 14/11/2013, 11:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mostrar registros que estan en la tabla, con columna adicional

Esto no se entiende

Cita:
El problema: cuando el administrador quiere una lista de todos los productos permitidos para un mercado indistintamente si esta rechazado o no me muestra solo los productos que no estan rechazados
Código MySQL:
Ver original
  1. Select distinct producto.*,
  2. from producto left join producto_rechazo
  3.        on producto_rechazo.id_producto=producto.id_producto
  4. where  producto_rechazo.id_mercado<>".$id_mercado."
  5.      OR producto_rechazo.id_producto is null;

Esto da los productos permitidos en un mercado dado, esten o no rechazados en otros mercados.

where producto_rechazo.id_mercado<>".$id_mercado." <---Productos rechazados en otros mercados

OR producto_rechazo.id_producto is null <-- productos que no estan rechazados en ningun mercado.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: adicional, columna, join, registros, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:13.