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

Crear funcion para obtener grupos de productos

Estas en el tema de Crear funcion para obtener grupos de productos en el foro de Mysql en Foros del Web. Hola, estoy queriendo hacer una funcion en php y realmente no se como hacerla. Me explico: Le he llamado getProductsbyParent, se trata de ingresarle una ...
  #1 (permalink)  
Antiguo 15/03/2011, 02:23
Avatar de SaveSolutions  
Fecha de Ingreso: agosto-2009
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 0
Crear funcion para obtener grupos de productos

Hola, estoy queriendo hacer una funcion en php y realmente no se como hacerla. Me explico:

Le he llamado getProductsbyParent, se trata de ingresarle una category_id ($id) de unas tablas de MySQL, tengo dos tablas, una que se llama categories_taxonomy y otra que se llama products.

Aclaro que la nomenclatura que utilizo es solo para describir la lógica que entiendo de lo que necesito, no es el codigo de la programacion. Disculpas por las molestias.

function getProductsbyParent($id)
$id -> voy a meterle un category_id

category_id hara la comprobacion de si es parent o child en la siguiente tabla:

categories_taxonomy
category_id, parent
14, 0
15, 14
16, 0
17, 16
18, 16
19, 16
20, 0
21, 14
22, 16

Notese que si parent = 0 implica que es una categoria parent
Si parent es diferente de 0 implica que es un categoria child

Por ejemplo, para categoria 16 (parent) deseo obtener un arreglo que incluya su propio category_id
suponiendo que $id =16 -> quiero obtener los hijos [16, 17, 18, 19, 22] -> $childs (16 es parent)

si $id = NULL (porque no encontraria, digamos 17, en la columna parent) entonces si no se encuentra -> $id debera ser su mismo category_id, en este caso 17 (no es parent) -> $childs

Osea que necesito que me lo guarde como una variable que he llamado $childs.

Ahora, ese $childs que obtengo lo usaré para que me devuelva una lista de productos, los que correspondan a esas $childs, entiendo que es como un filtro pues, que hace con la tabla products

products
id category_id
1, 14
2, 14
3, 15
4, 16
5, 12
6, 16
7, 18
8, 19
9, 17
10, 22

11, 8
12, 11
13, 20
14, 20
15, 8

obtendria los productos de un parent (16)

products
id category_id
4, 16
6, 16
7, 18
8, 19
9, 17
10, 22

obtendria los productos de un child (17)

products
id category_id
9, 17

Espero que puedan ayudarme ya que leo y leo y no sé como hacerlo. Saludos.
  #2 (permalink)  
Antiguo 15/03/2011, 05:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Crear funcion para obtener grupos de productos

Código MySQL:
Ver original
  1. SELECT * FROM products p
  2. WHERE p.category_id IN (SELECT ch.category_id
  3.                                         FROM categories_taxonomy ch
  4.                                           INNER JOIN
  5.                                                  category_id pr
  6.                                           ON ch.parent=pr.category_id
  7.                                           WHERE pr.category_id=$id)
  8. OR p.category_id=$id;

Esta consulta te da directamente los productos que buscas.... del WHERE puedes deducir la consulta para obtener los Childs....

Para usar esto en la función deberias preguntar en PHP.

Edito:

Código MySQL:
Ver original
  1. SELECT * FROM products p
  2. WHERE p.category_id IN (SELECT ch.category_id
  3.                                         FROM categories_taxonomy ch
  4.                                            WHERE ch.parent=$id)
  5. OR p.category_id=$id;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 16/03/2011 a las 01:59 Razón: Mas simple
  #3 (permalink)  
Antiguo 15/03/2011, 13:15
Avatar de SaveSolutions  
Fecha de Ingreso: agosto-2009
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Crear funcion para obtener grupos de productos

Muchas gracias, con tu ayuda he resuelto mi problema. Te agradezco el tiempo y tu conocimiento.

Etiquetas: funcion, grupos, productos
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 05:35.