Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/04/2022, 12:09
yosoloyo
 
Fecha de Ingreso: mayo-2008
Mensajes: 156
Antigüedad: 16 años, 6 meses
Puntos: 0
Subquery en un group by

Hola,

Espero explicarme con lo que necesito hacer.

Tengo una base de datos con productos. Estos productos son guardados por su código de barras pero existe redundancia controlada (esto seguramente no esteis la mayoría de acuerdo pero es por otro tema distinto a la pregunta) para que cada usuario añada a su universo de productos ese mismo producto, pero que a su vez sea independiente del resto con el mismo código de barras de otros usuarios.

En definitiva la tabla de productos es:
Código:
Productos (id, nombre, codigobarras, idUniverso)
Quiero hacer un repositorio de productos para que cuando un usuario de registre, pueda recuperar productos de otros usuarios. A la vez quiero que si el código de barras ya está incluido entre mis productos, que me aparezca en el listado, pero indicando que es mio y que por ello, por tanto, se haga un group by por código de barras para que no se repitan realmente los productos al mostrarlos.

Pero me surge la siguiente duda:

Si tengo estos datos por ejemplo:

Código:
id/nombre/codigobarras/idUniverso
1/agua/111/1
2/agua/111/2
3/azucar/222/2
4/azucar/222/5
5/canela/333/5
Si mi universo es el número 2, deberían aparecer en esa consulta agrupada por group by por código de barras, los productos: agua, azucar y canela pero indicando que son ya mios agua y azucar y no es mio la canela.
Pero claro, en el group by se elimina el idUniverso 2 por ejemplo en el agua, porque el idUniverso 1 es menor y por tanto entiendo que debe mostrar esto:

Código:
select * from productos group by codigobarras
1/agua/111/1
3/azucar/222/2
5/canela/333/5

Lo que quiero es un campo en donde me diga en esta consulta que el producto es mio o no, pero como no soy nada experto en sql (en este caso estoy usando mysql), me encomiendo a vosotros.
No sé si se puede hacer una subquery con un if por ejemplo en el que if id está en mi universo, de un sí o sino lo está de un no por ejemplo o algo similiar.

He pensado también en lugar de agrupar por group by, hacer una clave doble pero eso mostraría por pantalla miles de productos repetidos y no creo que sea la mejor opción

Gracias de antemano y espero haberme explicado