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

Seleccionar registros de dos tablas según criterio

Estas en el tema de Seleccionar registros de dos tablas según criterio en el foro de Mysql en Foros del Web. Hola. Formo parte de una Sociedad de pesca deportiva y me han encargado hacer una clasificación un poco especial. Las clasificaciones deben ir en dos ...
  #1 (permalink)  
Antiguo 08/04/2013, 14:04
 
Fecha de Ingreso: mayo-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Seleccionar registros de dos tablas según criterio

Hola.

Formo parte de una Sociedad de pesca deportiva y me han encargado hacer una clasificación un poco especial. Las clasificaciones deben ir en dos grupos, mas peso y el pez mas grande. Lo que se hace es clasificar a todos los participantes por mas peso y luego a todos por el pez mas grande y se compara donde queda mejor clasificado. Si quedan mejor clasificados por mas peso van al grupo de mas peso y lo mismo en el pez mas grande.

Tengo hecho las tablas de todos los participantes por mas peso y todos los participantes por pez mas gande,y lo que no me sale es como crear las tablas finales donde solo estén en un grupo u otro.

¿Alguien puede ayudarme ?

Muchas gracias.
  #2 (permalink)  
Antiguo 08/04/2013, 14:11
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Respuesta: Seleccionar registros de dos tablas según criterio

Pon la estructura de tus tablas.

Y por lo que respecta al codigo, pon lo que tienes hecho y lo que pretendes que haga tu aplicacion, porque no me queda nada claro.
  #3 (permalink)  
Antiguo 08/04/2013, 14:32
 
Fecha de Ingreso: mayo-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Seleccionar registros de dos tablas según criterio

Estructura:

Aqui clasifico a todos los participantes por el peso total, que sale de la tabla "concursosResultats":

Código MySQL:
Ver original
  1. SELECT * FROM concursosResultats
  2. WHERE NumConcurs = 1
  3. ORDER BY Kg_Mes_Pes DESC
Lo mismo es para el pez má grande

luego inserto los registros a
Código MySQL:
Ver original
  1. INSERT INTO concursosClassificatsMesPes(NumConcurs, Cliente18, TipusSoci, Empresa18, Naixament, Vetera, Num_pescant, Punts_Mes_Pes, Kg_Mes_Pes, Kg_Peix_Gros, Punts_Peix_Gros)
  2. VALUES ('$ConcursNum', '$Cliente18', '$TipusSoci', '$Empresa18', '$Naixament', '$Vetera', '$Num_pescant', '$Punts_Mes_Pes', '$Kg_Mes_Pes', '$Kg_Peix_Gros', '$Punts_Pgros')


Asi me quedan creadas dos tablas con todos los partipantes con la clasificación obtenida por mas peso y la obetinada por pez mas grande y lo que me falta es hacer dos tablas una con los que se han clasificado por mejor resultado de mas peso y otra por pez mas grande.

Sé que es complicado pero gracias por contestarme.

Última edición por gnzsoloyo; 18/04/2013 a las 20:32 Razón: Códgo de programacion no permitido en foros de BBDD
  #4 (permalink)  
Antiguo 08/04/2013, 18:50
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Seleccionar registros de dos tablas según criterio

Amigo explica mejor lo que quieres, porque no te comprendo bien... asi poder ayudarte..
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #5 (permalink)  
Antiguo 09/04/2013, 10:50
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Respuesta: Seleccionar registros de dos tablas según criterio

ok yo sigo si entender

dices que tienes:

Cita:
Tengo hecho las tablas de todos los participantes por mas peso y todos los participantes por pez mas gande
y que quieres:

Cita:
y lo que no me sale es como crear las tablas finales donde solo estén en un grupo u otro.
a ver que no ya estan cada uno en su grupo:

Cita:
tablas de todos los participantes por mas peso y todos los participantes por pez mas gande
Cita:
Aqui clasifico a todos los participantes por el peso total, que sale de la tabla "concursosResultats":

SELECT * FROM concursosResultats WHERE NumConcurs = 1 ORDER BY Kg_Mes_Pes DESC

Lo mismo es para el pez má grande
y volvemos:

Cita:
Asi me quedan creadas dos tablas con todos los partipantes con la clasificación obtenida por mas peso y la obetinada por pez mas grande
osea eso es lo que quieres y es lo que ya tienes no?

perooooo te falta:

Cita:
hacer dos tablas una con los que se han clasificado por mejor resultado de mas peso y otra por pez mas grande
pfff lo siento que yo no entiendo

y por lo poco que puedo comprender creo que tu problema es mas de mysql
  #6 (permalink)  
Antiguo 09/04/2013, 13:05
 
Fecha de Ingreso: mayo-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Seleccionar registros de dos tablas según criterio

Disculpad mi torpeza explicándome.

Se hacen dos clasificaciones con todos los conursantes. Si por ejemplo hay 100 concursantes, el primer paso es dos clasificaciones de 100 concursantes cada una. Una es por el total de Kg por concursante, clasificado por mas kg en orden descendente, la otra es por el pez de mas peso ordenado por orden descendente. Luego se deben comparar las dos tablas y ver en cuál de las dos un concursante queda mejor clasificado. Si queda mejor clasificado en la primera desaparece de la segunda y vicevera, quedando al final dos tablas de 50 paticipantes.
  #7 (permalink)  
Antiguo 09/04/2013, 14:31
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Respuesta: Seleccionar registros de dos tablas según criterio

Cita:
Luego se deben comparar las dos tablas y ver en cuál de las dos un concursante queda mejor clasificado. Si queda mejor clasificado en la primera desaparece de la segunda y vicevera, quedando al final dos tablas de 50 paticipantes
Ah!!! ahora voy comprendiendo

Vamos a hacer un ejemplito para terminar de comprender, sale?

tenemos 2 clasificaciones:

Código:
total kg concursante			
#	nombre concursante	kg concursante	
1	juan	                80	
2	pepe	                76	
3	pedro	                68	
4	pablo	                50	
5	maria	                48	
			
pez mas pesado (en kg me imagino)			
#	nombre pez	kg pez	concursante
1	pez1	         20	        2
2	pez2	         10	        3
3	pez1	         9	        1
4	pez3	         5	        5
5	pez4	         2       	4
ahi estan los datos, ahora cual debe ser la salida?
  #8 (permalink)  
Antiguo 09/04/2013, 14:57
 
Fecha de Ingreso: mayo-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Seleccionar registros de dos tablas según criterio

Es así:

total kg concursante grupo de más peso
# nombre Total peso clasificado
1 juan__________ 80__________ 1
2 pepe__________ 76 __________ 2
3 pedro_________ 68__________ 3
4 pablo_________ 50__________ 4
5 maria_________ 48__________ 5

pez mas pesado (en kg) grupo del peces más pesados
# nombre pez kg pez clasificado
1 pepe_________ 20__________ 1
2 juan_________ 10__________ 2
3 pablo_________ 9__________ 3
4 maria_________ 5__________ 4
5 pedro_________ 2__________ 5


Asi vemos que Juan queda mejor clasificado en el grupo de más peso y debe desaparecer del grupo de peces más pesados. y pepe debe desaparecer del grupo de más peso porque queda mejor clasificado en el grupo del pez más pesado y así con todos los concursantes.
El problema se complica cuando un coccursante queda en la misma posisción en ambos grupos. El grupo principal es el de mas peso, asi que en caso de quedar igual en ambos grupos debe pasarse al de más peso.

Última edición por fgbalmes; 09/04/2013 a las 15:02
  #9 (permalink)  
Antiguo 09/04/2013, 16:30
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Seleccionar registros de dos tablas según criterio

Soy un poco vago, y sólo he hecho una tabla llamada "aa", con id, maxpeso, y totalpeso.
Con los datos del ejemplo, la query:

Código SQL:
Ver original
  1. SET @a:=0;
  2. SET @b:=0;
  3. SELECT p1.id,IF(p1.posicion >= p2.posicion,0,1) grupo
  4.     FROM
  5.         (SELECT id,@a AS posicion,@a:=@a+1 FROM aa ORDER BY maxpeso DESC) p1
  6.         INNER JOIN
  7.         (SELECT id,@b AS posicion,@b:=@b+1 FROM aa ORDER BY totalpeso DESC) p2
  8.         ON p1.id=p2.id ORDER BY grupo;

da como resultado:
id;grupo
1;0
4;0
2;1
3;1
5;1
No me he fijado mucho en cuál debe ser la prioridad en caso de empate, pero eso se ajusta con el >= del IF.
Los que van al grupo 0, son los clasificados por pez más grande.
  #10 (permalink)  
Antiguo 12/04/2013, 13:25
 
Fecha de Ingreso: mayo-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Seleccionar registros de dos tablas según criterio

Gracias por ayudarme dashtrash.

Ahora estoy encallado aquí.

Tengo una tabla llamada "empates".

Necesito que el primer registro se copie en otra tabla llamada "tablamaspeso", el segundo a una tabla llamada tablapezgrande", el tercero otra vez a "tablamaspeso", el cuarto otra vez a "tablapezgrande" y así hasta leer todos los registros.

No sé cómo hacerlo. ¿Me puedes ayudar ?

Gracias.
  #11 (permalink)  
Antiguo 15/04/2013, 03:15
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Seleccionar registros de dos tablas según criterio

Usa la misma técnica:
Código SQL:
Ver original
  1. SET @counter:=0;
  2. INSERT INTO tablamaspeso
  3. SELECT [..campos..] FROM ( SELECT [..campos de empates..], @counter % 2 AS grupo, @counter:=@counter+1 FROM empates ) n WHERE grupo = 0;
  4. SET @counter:=0;
  5. INSERT INTO tablapezgrande
  6. SELECT [..campos..] FROM ( SELECT [..campos de empates..], @counter % 2 AS grupo, @counter:=@counter+1 FROM empates ) n WHERE grupo = 1;
  #12 (permalink)  
Antiguo 18/04/2013, 14:53
 
Fecha de Ingreso: mayo-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Seleccionar registros de dos tablas según criterio

Al final me perdí.

Parecía que todo funcionaba pero el resultado no era correcto. Lo vuelvo a exponer con vuestro permiso, de otra forma, las ayudas y las pruebas me han servido para tener clara la mecánica.


Tengo dos tablas con los mismos campos ordenadas por posición, Tabla1 y Tabla2.

Tabla1
Posicion-- id
1--------- 20
2--------- 30
3--------- 40
4--------- 10

Tabla2
Posicion id
1--------- 40
2--------- 20
3--------- 10
4--------- 30

Necsito hacer lo siguiente:

1. Leer el primer registro de Tabla2.
Si la posición de id es inferior al de Tabla1 borrar ese registro de Tabla2 y volver a enumerar las posiciones en Tabla2

2. Leer el segundo registro de Tabla1
si la posición de id es inferior al de Tabla2 borrar ese registro en Tabla1 y volver a enumerar las posiciones en Tabla1

y así sucesivamente.


¿Se puede hacer en php y mysql?


Gracias anticipadas.
  #13 (permalink)  
Antiguo 18/04/2013, 15:54
 
Fecha de Ingreso: marzo-2012
Mensajes: 14
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Seleccionar registros de dos tablas según criterio

Yo recomendaria el uso del "if" algo asi como que "Si tal cosa es mayor que otra entonces mover a tal parte, o imprimir tal cosa" Te facilita el trabajo! solo almacena todos los datos y has uso del IF
  #14 (permalink)  
Antiguo 18/04/2013, 16:00
 
Fecha de Ingreso: mayo-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Seleccionar registros de dos tablas según criterio

Gracias.

¿No me puedes ayudar un poco más ?
Con un poco de código ?

Etiquetas: php, registros, según, 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 10:40.