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

Campos repetidos

Estas en el tema de Campos repetidos en el foro de Mysql en Foros del Web. Os planteo la tabla y la duda ¿ok? Tabla productos (cod_prod,nombre, texto, precio_minimo) tabla codigo_total (cod_prod, cod_seccion, cod_color, cod_talla, nombre, precio_venta) En productos tengo cod_prod:00005 ...
  #1 (permalink)  
Antiguo 18/02/2007, 18:28
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Campos repetidos

Os planteo la tabla y la duda ¿ok?
Tabla productos (cod_prod,nombre, texto, precio_minimo)
tabla codigo_total (cod_prod, cod_seccion, cod_color, cod_talla, nombre, precio_venta)
En productos tengo
cod_prod:00005
nombre:Luath
texto:....
precio_minimo:10

En codigo_total tengo:
cod_prod:00005
cod_seccion:PI
cod_talla:04
nombre:Luath
precio_venta:10

cod_prod:00005
cod_seccion:PI
cod_talla:06
nombre:Luath
precio_venta:20

cod_prod:00005
cod_seccion:PI
cod_talla:08
nombre:Luath
precio_venta:30

Como veis elproducto Luath es uno pero en codigo total desgloso los precios y tamaños, el problema es que ahora quiero que me saque todos los campos de la tabla productos que sean de la seccion PI, yo habia hecho esto:
select * from productos inner join codigo_total on productos.cod_prod=codigo_total.cod_prod
where codigo_total.cod_seccion='PI'

Pues me saca los campos pero tres veces, como en codigo total hay tres 00005, pues me saca lo de l atabla productos tres veces y me dice que hay errores en la web.

Alguien sabe que puedo hacer? Con distinct no va porque el distinct solo funciona si los campos son identicos y como en este caso cod_talla y precio_venta son diferentes pues me los saca todos y conlimit no puedo porque lo uso para paginar, limito a 10 por pagina.

Necesito ayuda por favor.

Muchas gracias a tosos por vuestra ayuda
  #2 (permalink)  
Antiguo 18/02/2007, 19:42
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Re: Campos repetidos

Holas, porque no usas la sentencia GROUP BY, creo que esa seria la solucion a tu problema:
Código PHP:
SELECT 
FROM productos inner join codigo_total on  productos.cod_prod=codigo_total.cod_prod
WHERE codigo_total
.cod_seccion='PI'
GROUP BY cod_prod 
eso mostrara uno de cada producto, saludos, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #3 (permalink)  
Antiguo 18/02/2007, 20:42
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Campos repetidos

Lo he probado y me daba fallo en la consulta pero si pongo group by productos.cod_prod si funciona, lo que no se muy bien es por que, ni si debo poner codigo_total.cod_prod o productos.cod_prod.

Muchas gracias por tu ayuda

Un saludo

Alejandra
  #4 (permalink)  
Antiguo 18/02/2007, 22:14
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Campos repetidos

Rectifico, no va, osea si va pero me dice que la pagina tien error y en este momento estoy probando con sacar 2 articulos y si lo hago con group by los saca pero si pagino a un resultado me saca 6 links, como hay 3 productos de cada en codigo_total por tamaño y precio pues me saca 6 links, en definitva el group by tampoco me soluciona nada.
he estado pensado en poner un cod_seccion en la tabla productos y asi no hacer el innerjoin y no tener que pasar por la tabla codigo_total, que os parece? sería repetir un campo en dos tablaspero es lo unico que se me ocurre.

Un saludo y muchas grcias

Alejandra
  #5 (permalink)  
Antiguo 18/02/2007, 22:21
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Re: Campos repetidos

Holas Alejandr4, tienes razon faltaba poner el nombre de la tabla (codigo_total.cod_prod o productos.cod_prod), por que es necesario poner la tabla mas, es para evitar ambiguedad en la consulta me explico mejor con un ejemplo, imagina las tablas:
producto (id, nombre, descripcion)
cliente (id, nombre, direccion)
ventas (id, id_producto, id_cliente, fecha, monto)
cada una tiene su propio id la tabla ventas es la tabla intermedia entre producto y cliente, ahora si tu pones una consulta:
Código PHP:
//esta te genera un error por que el motor de la base de datos no sabe
//si estas pidiendo en el select que te muestre el id de cliente o el id ventas
//que son dos codigos que no tienen ninguna relacion
SELECT idnombre
FROM cliente INNER JOIN ventas ON 
(cliente.id ventas.id_cliente
pero en tu caso codigo_total.cod_prod o productos.cod_prod hacen referencia al mismo codigo, es decir al codigo del producto, por eso es que no afecta en nada si usas uno o otro en este caso, pero si tuvieras una situacion como la anterior tu tienes que decidir que es lo que necesitas, hacer uso del codigo del cliente o del codigo de la venta ya sea para un SELECT o para un sentencia GROUP BY o cualquier otra, espero haberme explicado, sin haberme extendido demasiado, saludos, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
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 07:33.