Foros del Web » Programando para Internet » PHP »

Subquery en un group by

Estas en el tema de Subquery en un group by en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 07/04/2022, 12:09
 
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
  #2 (permalink)  
Antiguo 12/04/2022, 10:51
Avatar de teslas  
Fecha de Ingreso: febrero-2013
Ubicación: Barcelona
Mensajes: 106
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Subquery en un group by

Seguro que se puede hacer con subconsultas tipo...

SELECT *
FROM tabla
WHERE category_id IN (SELECT id FROM categories WHERE type = 'A');
  #3 (permalink)  
Antiguo 13/04/2022, 14:52
 
Fecha de Ingreso: mayo-2008
Mensajes: 156
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Subquery en un group by

Gracias por responder. Al final lo hice con un left join a la misma tabla

Etiquetas: group, mysql, subquery
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 03:36.