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

Consulta Sql o Sp usando MySql

Estas en el tema de Consulta Sql o Sp usando MySql en el foro de Mysql en Foros del Web. Mira tengo una duda no se como se pueda hacer si usando solo una consulta o un Sp. Estoy usando php y mysql. Les cuento: ...
  #1 (permalink)  
Antiguo 18/01/2013, 16:40
Avatar de RastaMart  
Fecha de Ingreso: noviembre-2006
Mensajes: 91
Antigüedad: 17 años, 5 meses
Puntos: 3
Consulta Sql o Sp usando MySql

Mira tengo una duda no se como se pueda hacer si usando solo una consulta o un Sp. Estoy usando php y mysql.

Les cuento:
Tengo un programita donde lleva el control de clientes que asisten a los eventos.

Politicas:
1.- un cliente puede representar a otros.
2.- los clientes que asisten o son representados no pueden llegar otra vez.

todo eso ya lo tengo, mi duda es al generar el reporte por que tengo estas dos tablas:

tblsilla (para los clientes que asistieron)
idsilla, idevento, idmesa, idcliente


tblrelacion (para los clientes que fueron representados, idpadre es el idcliente del que asistio y el idhijo es el que fue representado)
idrelacion, idpadre, idhijo, idevento, idmesa


esta otra es la tabla para mis nombres...
tblclientes
idcliente,nombre, apellidos, etc etc.

Cuando muestro el reporte de X evento, y de X silla, hago dos consultas....
una para obtener los padres, haciendo un ciclo por cada padre para obtener a sus hijos , esto viene siendo la segunda consulta.

pero habría alguna manera de hacerlo en una sola o un Sp para hacerlo.

Mostrando información similar a esto...
No IdCli Nombre
1 C001 Marcos (Cliente que asistio)
C012 Marcelo (Cliente quefue representado)
C903 Mario (Cliente quefue representado)

2 C121 Moise (Cliente que asistio)
C512 Juan (Cliente quefue representado)
C203 Pedor (Cliente quefue representado)


Se les agradece mucho la ayuda. Saludos

Última edición por RastaMart; 22/01/2013 a las 18:02 Razón: No encuentro solucion....
  #2 (permalink)  
Antiguo 23/01/2013, 14:10
 
Fecha de Ingreso: octubre-2008
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Consulta Sql o Sp usando MySql

Algo así como?

select tabla1.nombre, tabla2.mesa
from tabla1, tabla2
where tabla1.idmesa=tabla2.id

Saludos.
  #3 (permalink)  
Antiguo 23/01/2013, 15:18
Avatar de RastaMart  
Fecha de Ingreso: noviembre-2006
Mensajes: 91
Antigüedad: 17 años, 5 meses
Puntos: 3
Respuesta: Consulta Sql o Sp usando MySql

No mi estimado. Supongamos que tenemos estos registros:

tabla cliente
IdCliente ------------- Nombre ------------- Apellidos
C001------------------- Mario ------------- Morales
C002------------------- Marcos ------------- Vera
C003------------------- Maria ------------- Grajales
C004------------------- Mateo ------------- Miceli
C005------------------- Julian ------------- Gonzalez
C006------------------- Jorge ------------- Gonzalez
C007------------------- Jaime ------------- Morales
C008------------------- Julio ------------- Martinez


tabla silla
No ------------- idcliente ------------- idmesa ------------- idevento
001 ------------- C001 ------------------- 1 ---------------------- 6
002 ------------- C002 ------------------- 1 ---------------------- 6
003 ------------- C003 ------------------- 1 ---------------------- 6

tabla relacion
idrelacion ------------- padre -------------Hijo------------- idmesa ------------- idevento
001 ---------------------C001 ------------ C004 -------------- 1 --------------------- 6
001 ---------------------C001 ------------ C005 -------------- 1 --------------------- 6
001 ---------------------C002 ------------ C006 -------------- 1 --------------------- 6
001 ---------------------C002 ------------ C007 -------------- 1 --------------------- 6
001 ---------------------C003 ------------ C008 -------------- 1 --------------------- 6


Y el resulta fuera el siguiente


No IdCliente ------------- Nombre ------------- Apellidos
1------ C001------------------- Mario ------------- Morales
------- C004------------------- Mateo ------------- Miceli
------- C005------------------- Julian ------------- Gonzalez

2------ C002------------------- Marcos ------------- Vera
------- C006------------------- Jorge ------------- Gonzalez
-------C007------------------- Jaime ------------- Morales

3------C003------------------- Maria ------------- Grajales
--------C008------------------- Julio ------------- Martinez

Colocando unicamente numeros a los que son padres....
  #4 (permalink)  
Antiguo 24/01/2013, 14:58
 
Fecha de Ingreso: octubre-2008
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Consulta Sql o Sp usando MySql

Entonces, lo que tienes que hacer es una:

Select para que te salgan los asistentes
UNION
Select para que te salgan los representados

Deberás usar un alias en ambas selects para que coincidan los campos entre ambas selects y no te dé error. Adicionalmente, para el campo No del resultado, en la primera deberás devolver el número que quieras y para la segunda consulta un valor null, para que no te devuelva el número.

Saludos.
  #5 (permalink)  
Antiguo 24/01/2013, 15:55
Avatar de RastaMart  
Fecha de Ingreso: noviembre-2006
Mensajes: 91
Antigüedad: 17 años, 5 meses
Puntos: 3
Respuesta: Consulta Sql o Sp usando MySql

Pero el numero de acuerdo a las personas que se manejan... o en su caso, colocar un indentificador para saber que es el padre...
  #6 (permalink)  
Antiguo 26/01/2013, 11:37
 
Fecha de Ingreso: octubre-2008
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Consulta Sql o Sp usando MySql

Perdona, no entendí tu última respuesta. ¿Es alguna duda adicional?

Saludos.
  #7 (permalink)  
Antiguo 30/01/2013, 11:13
Avatar de RastaMart  
Fecha de Ingreso: noviembre-2006
Mensajes: 91
Antigüedad: 17 años, 5 meses
Puntos: 3
Respuesta: Consulta Sql o Sp usando MySql

la pregunta seria, como identifico quien es padre o quien es hijo..... si te das cuenta en el ejemplo que pongo a los padres les coloco un Id consecutivo.... y a los hijos los dejo vacio...
  #8 (permalink)  
Antiguo 30/01/2013, 14:17
 
Fecha de Ingreso: octubre-2008
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Consulta Sql o Sp usando MySql

Supongo que las selects para identificar quiénes son los asistentes y los representados las tienes claras y que, por separado, es decir, sin usar la sentencia UNION, te funcionan correctamente.
Ahora, lo que te falta es saber cómo obtener, para la de asistentes, un ordinal que, para los representados, estará en blanco.

Supongamos que tienes, para la consulta de los asistentes, una query del tipo:

Código MySQL:
Ver original
  1.   TABLA1.CAMPO1,
  2.   TABLA1.CAMPO2,
  3.   TABLA1.CAMPO3
  4.   TABLA1
  5.   CONDICION1 AND
  6.   CONDICION2;

La deberías transformar del siguiente modo:
Código MySQL:
Ver original
  1.   @contador:=@contador+1,
  2.   TABLA1.CAMPO1,
  3.   TABLA1.CAMPO2,
  4.   TABLA1.CAMPO3
  5.   (SELECT @contador:=0) CONTADOR,
  6.   TABLA1
  7.   CONDICION1 AND
  8.   CONDICION2;

De este modo, ya tienes un contador ordinal de cada uno de los registros que buscas.

Ahora bien, para la consulta de los representados, supongamos que tienes la consulta tipo siguiente:

Código MySQL:
Ver original
  1.   TABLA2.CAMPO1,
  2.   TABLA2.CAMPO2,
  3.   TABLA2.CAMPO3
  4.   TABLA2
  5.   CONDICION1 AND
  6.   CONDICION2;

La deberías convertir en lo siguiente:

Código MySQL:
Ver original
  1.   NULL,
  2.   TABLA2.CAMPO1,
  3.   TABLA2.CAMPO2,
  4.   TABLA2.CAMPO3
  5.   TABLA2
  6.   CONDICION1 AND
  7.   CONDICION2;

Si te fijas, en lugar del ordinal, te mostrará un valor NULL.

Cuando realices la query con el UNION, tendrás por un lado los asistentes con un ordinal y los representados con un NULL.

Espero que te sirva.

Saludos.
  #9 (permalink)  
Antiguo 31/01/2013, 13:39
Avatar de RastaMart  
Fecha de Ingreso: noviembre-2006
Mensajes: 91
Antigüedad: 17 años, 5 meses
Puntos: 3
Respuesta: Consulta Sql o Sp usando MySql

Ya haci las consultas por separado.

Haciendo el ejemplo que me pasaste, pero al momento de generar la consulta.

Me repite al cliente tantos representados tenga, por ejemplo si el cliente

No IdCliente ------------- Nombre ------------- Apellidos
1------ C001------------------- Mario ------------- Morales ------- C004------------------- Mateo ------------- Miceli
2------ C001------------------- Mario ------------- Morales ------- C005------------------- Julian ------------- Gonzalez

esta es la consulta...

SELECT @contador := @contador +1, Sp.NoClie, Sp.nombre, Sp.apellidos,Sh.NoClie, Sh.nombre, Sh.apellidos
FROM (SELECT @contador :=0)contador, tblpadres AS P
INNER JOIN tblcliente AS Sp ON P.idsocio = Sp.num_socio
INNER JOIN tblpadre_hijo AS H ON ( H.idevento, H.mesa, H.padre ) = ( P.idevento, P.idmesa, P.NoClie )
INNER JOIN tblcliente AS Sh ON Sh.NoClie = H.hijo
WHERE P.idevento = '21'
AND P.idmesa = '1'

A menos que este haciendo mal mi consulta.

Gracias por apoyarme...
  #10 (permalink)  
Antiguo 01/02/2013, 12:18
 
Fecha de Ingreso: octubre-2008
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Consulta Sql o Sp usando MySql

Yo creo que estás haciendo mal la consulta, pero sin conocer el modelo de datos es difícil adivinar la consulta. Creo que deberías relacionar la tabla silla con la de clientes. Pero ya te digo que, sin tener el modelo de datos, no podré ayudarte.

Lo siento.

Saludos.

Etiquetas: php, sql, tabla, usando
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 13:27.