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

Consulta SQL en dos tablas mostrar solo 2 filas de cada categoría

Estas en el tema de Consulta SQL en dos tablas mostrar solo 2 filas de cada categoría en el foro de Mysql en Foros del Web. Hola a todos :), espero su ayuda , estoy realizando consulta en dos tablas, (dat_prod y dat_prod_cat ), realizo la siguiente consulta : @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 09/09/2013, 15:34
Avatar de capa  
Fecha de Ingreso: octubre-2006
Mensajes: 86
Antigüedad: 18 años, 1 mes
Puntos: 1
Consulta SQL en dos tablas mostrar solo 2 filas de cada categoría

Hola a todos :), espero su ayuda , estoy realizando consulta en dos tablas, (dat_prod y dat_prod_cat ), realizo la siguiente consulta :
Código MySQL:
Ver original
  1. SELECT p.id, c.cid, c.categoria, p.producto
  2. FROM dat_prod p
  3. JOIN dat_prod_cat c ON p.cid = c.cid;
con esta consulta me muestra lo siguiente:

Cita:
id cid categoria producto
1 1 Lácteos Leche de vaca
2 1 Lácteos Leche de vaca en blosa 1Litro
3 2 Frutas Mamzana 1Kilo
4 2 Frutas Banamas 1Kilo
5 3 Verduras Luechuga en bolsa 1Kilo
18 4 Carne Carne de ternera
19 4 Carne Carne de ave
6 3 Verduras Tomates de 1Kilo
7 2 Frutas Naranja 1Kilo
8 4 Carne jamon
9 1 Lácteos Leche de vaca en blosa 1Litro
10 1 Lácteos Leche de vaca en blosa 2Litro
11 3 Verduras Luechuga en bolsa 2Kilo
12 1 Lácteos huevos
13 1 Lácteos yogur 1Litro
14 1 Lácteos yogur 2Litro
15 1 Lácteos yogur 1Litro
16 1 Lácteos huveos
17 3 Verduras Calabazas
20 7 Lácteos Leche de vaca
Intento hacer una consulta SQL, Busco lo siguiente: que me muestre 2 productos de cada categoría, la tabla seria algo similar a este.
Cita:
id cid categoria producto
1 1 Lácteos Leche de vaca
2 1 Lácteos Leche de vaca en blosa 1Litro
3 2 Frutas Mamzana 1Kilo
4 2 Frutas Banamas 1Kilo
5 3 Verduras Luechuga en bolsa 1Kilo
18 4 Carne Carne de ternera
19 4 Carne Carne de ave
6 3 Verduras Tomates de 1Kilo
No logro hacerlo, espero de su apoyo
Gracias a todos
__________________
Destreza..<?phs La felicidad es un trayecto ?>
  #2 (permalink)  
Antiguo 10/09/2013, 01:05
Avatar de capa  
Fecha de Ingreso: octubre-2006
Mensajes: 86
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: Consulta SQL en dos tablas mostrar solo 2 filas de cada categoría

Hola de nuevo :D


La idea es hacer esto, pero usando solo consulta SQL, si hay alguna idea o sugerencia estare pendiente saludos.
Cita:
Editado: Código de programación no permitido en foros de Base de Datos. Leer las normas del Foro, por favor.
__________________
Destreza..<?phs La felicidad es un trayecto ?>

Última edición por gnzsoloyo; 10/09/2013 a las 03:14
  #3 (permalink)  
Antiguo 10/09/2013, 04:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta SQL en dos tablas mostrar solo 2 filas de cada categoría

A pesar de lo que parece, la consulta que necesitas no es una consulta simple. Hay varias formas de hacerlo, pero esta sería una:
Código MySQL:
Ver original
  1. SELECT     p.id, c.cid, c.categoria, p.producto
  2.   (SELECT
  3.     p.id, c.cid,
  4.     c.categoria,
  5.     p.producto,
  6.     IF(@prod<> p.id, @cat:=@cat+1, @cat) cat,
  7.      @prod:= p.id
  8.   FROM
  9.     dat_prod p INNER JOIN dat_prod_cat c ON p.cid = c.cid
  10.     JOIN (SELECT @cat := 0, @prod:=0)
  11.   ORDER BY p.id, c.categoria) T1
  12. WHERE cat <=2;
No estoy seguro de su resultado exacto, porque es posible que necesite de un nivel de ordenamiento más, pero la idea andaría.
Todo otro camino que yo veo requiere de iteraciones y usar stored procedures.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: cada, filas, join, select, sql, tabla, tablas
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 09:45.