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

Consulta Sql Atipica

Estas en el tema de Consulta Sql Atipica en el foro de Mysql en Foros del Web. Hola a todos tengo dos tablas (son mas pero es para darles un ejemplo) TABLA1 ID_HDT | N_ORDEN_DESPACHO 1 2 2 3 TABLA2 N_ORDEN_DESPACHO | ...
  #1 (permalink)  
Antiguo 12/11/2008, 18:34
 
Fecha de Ingreso: noviembre-2006
Ubicación: Trenque Lauquen
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Pregunta Consulta Sql Atipica

Hola a todos tengo dos tablas (son mas pero es para darles un ejemplo)

TABLA1
ID_HDT | N_ORDEN_DESPACHO
1 2
2 3

TABLA2
N_ORDEN_DESPACHO | N_MANIFIESTO
2 ABY00007
2 ABY00008
3 CUZ00001

La relacion es por N_ORDEN_DESPACHO de tabla1 (1) a tabla2(muchos)

lo que me gustaria es sacar una consulta que me des un resultado asi

-----------------------------------------------------------
TABLA1.ID_HDT | TABLA2.N_MANIFIESTO
1 ABY00007/ABY00008
-------------------------------------------------------

Esto se puede hacer o estoy intentando un imposible??? lo que pasa es que
necesito este tipo de reportes, o lo voy a tener que hacer unicamente por
programacion?????, bueno muchas gracias de antemano por la ayuda, y por
favor si pido algo imposible diganmelo asi dejo de buscar y me pongo a
programar.
saludos!!!!!!!
  #2 (permalink)  
Antiguo 12/11/2008, 19:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta Sql Atipica

Sería técnicamente posible si la cardinalidad fuese 1 a 2. Pero como estás planteando 1 a N, la única forma que queda es barriendo la tabla de a registro... y eso es más facil hacerlo con la aplicación. Simplemene porque no sabes a priori a cuantas instancias de la tabla2 corresponde una de la tabla1, con lo que el resultado requeriría una N + 1 cantidad de columnas...

Para el caso de ser 1:2, la cosa sería:

Código sql:
Ver original
  1. SELECT id_hdt, MIN(n_manifiesto), MAX(n_manifiesto)
  2. FROM tabla1 INNER JOIN tabla2 USING(id_hdt)
  3. GROUP BY id_hdt;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/11/2008, 19:39
 
Fecha de Ingreso: noviembre-2006
Ubicación: Trenque Lauquen
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Consulta Sql Atipica

Muchas gracias por la respuesta, creo que no me va a quedar otra que hacerlo desde la aplicacion, bueno de nuevo gracias, saludos!!
  #4 (permalink)  
Antiguo 13/11/2008, 17:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta Sql Atipica

juan291181

Cita:
TABLA1
ID_HDT | N_ORDEN_DESPACHO
1 2
2 3

TABLA2
N_ORDEN_DESPACHO | N_MANIFIESTO
2 ABY00007
2 ABY00008
3 CUZ00001

La relacion es por N_ORDEN_DESPACHO de tabla1 (1) a tabla2(muchos)

lo que me gustaria es sacar una consulta que me des un resultado asi

-----------------------------------------------------------
TABLA1.ID_HDT | TABLA2.N_MANIFIESTO
1 ABY00007/ABY00008
-------------------------------------------------------
Tal vez no te haya entendido, pero si lo que quieres es que te muestre cada uno de los id con sus N_ORDEN_DESPACHO y los N_MANIFIESTO de cada N_ORDEN_DESPACHO, separando cada uno de ellos con una barra, creo que sí puedes hacerlo agrupando por N_ORDEN_DESPACHO y mostrando mediante GROUP_CONCAT el resultado.

Código sql:
Ver original
  1. SELECT t1.ID_HDT, N_ORDEN_DESPACHO, GROUP_CONCAT( N_MANIFIESTO
  2. SEPARATOR '/' )
  3. FROM `tabla1` t1
  4. INNER JOIN tabla2 t2
  5. USING ( N_ORDEN_DESPACHO )
  6. GROUP BY t1.N_ORDEN_DESPACHO

Cuando sólo hay uno, también pone la barra...
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 19:38.