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

Consulta de Referencia Cruzada

Estas en el tema de Consulta de Referencia Cruzada en el foro de Mysql en Foros del Web. Hola saben tengo una duda que se convierte en problema :( nose como hacer referencia cruzada en mysql ... me imagino que utilizando un join ...
  #1 (permalink)  
Antiguo 28/12/2007, 10:11
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 4 meses
Puntos: 0
Pregunta Consulta de Referencia Cruzada

Hola

saben tengo una duda que se convierte en problema :(

nose como hacer referencia cruzada en mysql ... me imagino que utilizando un join o algo similar?


laidea es la siguiente tengo una tabla2 en que almaceno codigos y fechas e idtabla1

y quiero mostrar los codigos y fechas con los mismos idtabla1 pero pero que el idtable 1 sean las columnas.



es posible

les agradeceria muchisimo su ayuda
saludos
  #2 (permalink)  
Antiguo 28/12/2007, 10:21
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Consulta de Referencia Cruzada

dejame ver si entendi.

TABLE2
(codigo,fecha,idtabla1)

Posibles datos

1 20/08/1977 1
2 15/10/2007 1
3 12/12/1960 2

Donde 1,1,2 que corresponden a idtabla corresponde al registro que esta en TABLE1
(idtabla1,nombre)
1 misdatos
2 tusdatos

y tu quieres hacer un join de table2 con table1 donde en lugar de mostrar
1 20/08/1977 1 1 misdatos te muestre
1 20/08/1977 1 [campos de la tabla misdatos]

es esto asi??

Cita:
Iniciado por liliancita Ver Mensaje
Hola

saben tengo una duda que se convierte en problema :(

nose como hacer referencia cruzada en mysql ... me imagino que utilizando un join o algo similar?


laidea es la siguiente tengo una tabla2 en que almaceno codigos y fechas e idtabla1

y quiero mostrar los codigos y fechas con los mismos idtabla1 pero pero que el idtable 1 sean las columnas.



es posible

les agradeceria muchisimo su ayuda
saludos
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #3 (permalink)  
Antiguo 28/12/2007, 10:43
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Consulta de Referencia Cruzada

hola


es algo asi


tabla2

Código:
id |codigo |fecha | idtabla1

1 | as34  | 2007 |   1
2 | re45  | 2006  |   1
3 | ef56  | 2005  |   2

lo que quiero que muestre es esto

Código:
1                 |    2

as34 2007 |
re45 2006  |
                   |  ef56
se entiende
  #4 (permalink)  
Antiguo 28/12/2007, 11:29
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Consulta de Referencia Cruzada

pues nunca lo he tenido que hacer.... y realmente desconozco si se podra hacer algo asi, pero me suena a como que no se podria... esperemos a ver si alguien te da una solucion, porque la unica forma que se me ocurres con alguna vista o tabla temporal....

Cita:
Iniciado por liliancita Ver Mensaje
hola


es algo asi


tabla2

Código:
id |codigo |fecha | idtabla1

1 | as34  | 2007 |   1
2 | re45  | 2006  |   1
3 | ef56  | 2005  |   2

lo que quiero que muestre es esto

Código:
1                 |    2

as34 2007 |
re45 2006  |
                   |  ef56
se entiende
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #5 (permalink)  
Antiguo 28/12/2007, 12:55
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: Consulta de Referencia Cruzada

Lo que pides se podría hacer con IFs o CASEs, pero eso tiene el inconveniente de que si algún quieres agregar un valor 3 tienes que modificar la query.... así que te recomiendo encarecidamente que no lo hagas.

¿Cuál es el problema que buscas resolver haciendo la query de esa forma?
  #6 (permalink)  
Antiguo 28/12/2007, 14:24
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Consulta de Referencia Cruzada

hola

:(

no soy yo la que quere hacer eso, es lo que me piden que haga el programa


y la idea se supone es mostrar todos los codigos y las fechas en una tabla en al cual las columnas sean los nombres de las id de la otra tabla

saludos
  #7 (permalink)  
Antiguo 28/12/2007, 14:33
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Consulta de Referencia Cruzada

pero no es un cubo lo que te han dejado que hagas?? o para que, como preguntaron antes.... cual es el objetivo de hacer eso? como se decir, talvez le estamos buscando una solucion al problema equivocado...

Cita:
Iniciado por liliancita Ver Mensaje
hola

:(

no soy yo la que quere hacer eso, es lo que me piden que haga el programa


y la idea se supone es mostrar todos los codigos y las fechas en una tabla en al cual las columnas sean los nombres de las id de la otra tabla

saludos
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #8 (permalink)  
Antiguo 28/12/2007, 14:55
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Consulta de Referencia Cruzada

me dijeron que utilizara referencia cruzada para obtener los codigos y fechas por tipo de producto, existiendo en la tabla2 el codigo, la fecha y el id de los productos, y en la tabla 1 esta la info de los productos.


La tabla o campos a mostrar consite en que las columnas sean los nombres de los productos, una fila con los codigos y bajo cada nombre de producto de acuerdo al codigo la fecha de cotizacion

se entiende?

saludos
  #9 (permalink)  
Antiguo 28/12/2007, 15:28
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Consulta de Referencia Cruzada

Cita:
Iniciado por liliancita Ver Mensaje
me dijeron que utilizara referencia cruzada para obtener los codigos y fechas por tipo de producto, existiendo en la tabla2 el codigo, la fecha y el id de los productos, y en la tabla 1 esta la info de los productos.


La tabla o campos a mostrar consite en que las columnas sean los nombres de los productos, una fila con los codigos y bajo cada nombre de producto de acuerdo al codigo la fecha de cotizacion

se entiende?

saludos
pues eso amiga es a lo que me refiero, son cubos de datos, OLAP, o nose conque otro nombre se le conocen, tengo años de no toparme con ellos, y pues me tope con ellos con MSSQL, en mysql no he tenido la oportunidad de conocer del tema, lo que necesitas es tener una tabla y datos pivot.
No has buscado en san google a ver que encuentras? en MSSQL estoy seguro de que se puede, y si te lo han dejado de tarea en mysql, lo mas seguro es que tambien se pueda
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #10 (permalink)  
Antiguo 28/12/2007, 15:28
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Consulta de Referencia Cruzada

bueno googleando encontre esto
resultados verticales pero no he encontrado mayor cosa, googleemos a ver que encontramos....

espero y te sirva..
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #11 (permalink)  
Antiguo 28/12/2007, 15:35
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Consulta de Referencia Cruzada

encontre esto, no lo vi a profundidad, pero al aprecer es similar a mi propuesta de tabla temporal, miralo talvez te sirve
http://en.wikibooks.org/wiki/Program...QL/Pivot_table
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #12 (permalink)  
Antiguo 30/12/2007, 18:35
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Consulta de Referencia Cruzada

hola

diculpa el haberme desmorado en responderte pero me quede sin internet :(

queria agradecerte por la pagina

era como sale ahi

osea la consulta es la siguiente

Cita:
select codigo
sum(date*(1-abs(sign(idhito-1)))) as prod1,
sum(date*(1-abs(sign(idhito-2)))) as prod2,
sum(date*(1-abs(sign(idhito-3)))) as pord3

from tabla2_ group by cod_sitio

y asi se logra lo qeu yo encesita asi q muchas gracias

el unico detalle es que la fecha la coloca como numero completo pero ya vere como arreglarlo

asi q grax a todos por su ayuda
  #13 (permalink)  
Antiguo 02/01/2008, 11:50
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Consulta de Referencia Cruzada

pues yo hasta este momento entro... pero que bueno saber que fue util, pues me interesa mucho el tema fijate, tengo una aplicacion que podria ser mas util con reportes asi... asi que mas bien tu me ayudaste jejeje
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #14 (permalink)  
Antiguo 02/01/2008, 14:36
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: Consulta de Referencia Cruzada

Hola,

Permítanme venir a evangelizar un poco con mi idea de cómo debería ser.
A ver liliancita. Si no te dicen cómo hace el SQL pero cómo quieren que lo muestres entonces no te enredes con la SQL.
Simplemente recorre los registros y dependiendo del valor de id_tabla lo muestras en una columna o en otra... incluso puedes sacarte un SELECT DISTINCT id_tabla FROM tabla2 para saber cuántas columnas vas a tener y así imprimir el encabezado... y el sistema te ha quedad extensible para cualquier cantidad de "tablas".

En fin... a como lo veo este es un problema de capa presentación y no de BD. Cualquier problema que tengas de este tipo se puede resolver en el peor de los casos utilizando un arreglo para almacenar la data antes de presentarla.
  #15 (permalink)  
Antiguo 02/01/2008, 15:13
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Consulta de Referencia Cruzada

Hola

encuentro muy logica tu idea, en un principio lo habia echo asi, pero involucra mas lineas de codigo... y el objetivo era realizarlo de la forma mas eficiente y usando referencia cruzada y una sola consulta sql, es por ello que lo hize asi

el unico detalle y es para este caso en especifico es lo de la fecha que la devuelve como caracter y no como fecha, pero en el caso de que estes ordenando por numero o varchar funciona correctamente

Código:
select codigo
sum(date*(1-abs(sign(id-1)))) as prod1,
sum(date*(1-abs(sign(id-2)))) as prod2,
sum(date*(1-abs(sign(id-3)))) as pord3

from tabla2_ group by codigo
saludos
  #16 (permalink)  
Antiguo 03/01/2008, 20:00
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: Consulta de Referencia Cruzada

Perfecto,

Si tienes razones para hacerlo de una forma particular, entonces no aplica demasiado mi comentario.... que estaba hecho en términos generales.

Ahora bien, y también en términos generales, simplemente quiero hacer una acotación. Hacer el código más eficiente no quiere decir que la ejecución del PHP sea lo más eficiente: debes ver al programa como un todo cuando piensas en la eficiencia, es decir, si una operación implica mucha carga en la BD y relativamente poca en el PHP, el mejor código será el que aproveche mejor la bondad del PHP y viceversa.
De nuevo, el comentario es genérico, pero no me gustaría que alguien se quede con la idea de que hacer algo de una manera eficiente significa optimizar el código solamente. Hay que pensar en el todo.
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 02:34.