MySQL - Mostrar los registros con el numero mas alto

 
Vista:
sin imagen de perfil

Mostrar los registros con el numero mas alto

Publicado por daniel (6 intervenciones) el 15/12/2016 22:01:26
Buen dia.
Este es mi problema.
Realizo la consulta:
1
2
3
Select id_spool,id_proyectof,n_spool,grid,revision FROM spool
WHERE id_spool NOT IN (SELECT fid_spool FROM wp_fabrication)
AND id_proyectof='1'

esta consulta me muestra todos los spools que no hayan sido metidos en un reporte, pero lo que se me pide es que solo muestre aquellos con la ultima revision.

ejemplo.

Lo que muestra mi consulta:

id_spool --- id_proyectof--- n_spool--- grid---- revision
1 -- 1 -- 0001 -- 6GM -- 0
2 -- 1 -- 0001 -- 6GM -- 1
3 -- 1 -- 0002 -- 6GM -- 1
4 -- 1 -- 0002 -- 6GM -- 2
5 -- 1 -- 0002 -- 6GM -- 3

pero lo que necesito mostrar es esto;

id_spool --- id_proyectof--- n_spool--- grid---- revision
2 -- 1 -- 0001 -- 6GM -- 1
5 -- 1 -- 0002 -- 6GM -- 3
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Mostrar los registros con el numero mas alto

Publicado por xve (1151 intervenciones) el 16/12/2016 08:38:11
Hola Daniel, la manera que yo lo haria, es ordenarlos por la revision descendente y el resultado, agruparlo por id_proyectof... algo así:

1
2
3
4
5
6
7
8
SELECT * FROM
(
Select id_spool,id_proyectof,n_spool,grid,revision FROM spool
WHERE id_spool NOT IN (SELECT fid_spool FROM wp_fabrication)
AND id_proyectof='1'
ORDER BY revision DESC
) s1
GROUP BY id_prioyectof

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Mostrar los registros con el numero mas alto

Publicado por xve (1151 intervenciones) el 16/12/2016 15:41:35
Hola Daniel, comentando con Kip en el chat, me he dado cuenta que me he equivocado de columna, en vez de id_prioyectof es n_spool, quedando algo así:
1
2
3
4
5
6
7
8
SELECT * FROM
(
Select id_spool,id_proyectof,n_spool,grid,revision FROM spool
WHERE id_spool NOT IN (SELECT fid_spool FROM wp_fabrication)
AND id_proyectof='1'
ORDER BY revision DESC
) s1
GROUP BY n_spool
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Mostrar los registros con el numero mas alto

Publicado por daniel (6 intervenciones) el 19/12/2016 23:47:47
gracias por tu ayuda pero cuando pongo la consulta que me proporcionas se queda ciclado la pagina de phpMyAdmin y cierra el navegador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 98
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Mostrar los registros con el numero mas alto

Publicado por kip (30 intervenciones) el 16/12/2016 13:57:28
Hola, intentalo asi:

1
2
3
4
5
SELECT id_spool, id_proyectof, n_spool, grid, MAX(revision)
FROM spool
WHERE id_spool NOT IN (SELECT fid_spool FROM wp_fabrication)
AND id_proyectof='1'
GROUP BY n_spool

Pruebalo, si no sirve intenta con el codigo que dejo Xve.

Nos cuentas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 98
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Mostrar los registros con el numero mas alto

Publicado por kip (30 intervenciones) el 16/12/2016 16:29:13
Creo que tambien he tenido un error, comentandolo con Xve, intenta de esta forma ya que en la anterior se pierden los datos de la columna id_spool:

1
2
3
4
5
SELECT id_spool, id_proyectof, n_spool, grid, revision
FROM spool
WHERE id_spool NOT IN (SELECT fid_spool FROM wp_fabrication)
WHERE revision IN (SELECT MAX(revision) FROM spool GROUP BY n_spool)
AND id_proyectof='1'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Mostrar los registros con el numero mas alto

Publicado por daniel (6 intervenciones) el 19/12/2016 23:45:34
sp

como puedes ver igual me toma todas las revisiones de los spool.
Y perdon por no responder pero en el rancho donde vivo esta el mal tiempo y sin internet.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Mostrar los registros con el numero mas alto

Publicado por daniel (6 intervenciones) el 20/12/2016 00:17:41
creo que el detalle es que no lee el Segundo where, pero lo cambie por otro AND y me muestra solo las revisiones mas altas mas no la revicion mas alta de cada spool
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 98
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Mostrar los registros con el numero mas alto

Publicado por kip (30 intervenciones) el 20/12/2016 01:54:31
Lo siento, coloque mal la query, tal como dices en lugar de WHERE es AND, ahora bien cuando te refieres a cada spool quieres decir cada n_spool no? puedes contarnos con mas detalles o colocar la imagen del resultado que obtienes?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Mostrar los registros con el numero mas alto

Publicado por daniel (6 intervenciones) el 20/12/2016 02:12:34
ok mira lo que me piden es que muestre los spools con su revicion mas alta, y lo que hace la query, que me proporcionaste es mostrar los spools con el numero de revision mas alta.

ejemplo

Tengo los siguientes spools con su revision.
spool: 0001 revision 2
spool :0001 revision 3
spool: 0002 revision 0
spool: 0002 revision 1
spool: 0003 revision 0
spool: 0003 revision 1
spool: 0004 revision 0
spool: 0004 revision 1
spool: 0004 revision 2
spool: 0004 revision 3

y lo que necesito visualizar son los spools con su revision mas alta

spool: 0001 revision 3
spool: 0002 revision 1
spool: 0003 revision 1
spool: 0004 revision 3

y lo que hace la query que me proporcionaste es mostrar las revisiones mas altas encontradas con su spool, mas no la mas alta de cada spool.
Este es lo que me arroja tu consulta amigo.
spool: 0001 revision 3
spool: 0004 revision 3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 98
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Mostrar los registros con el numero mas alto

Publicado por kip (30 intervenciones) el 20/12/2016 03:12:15
Entiendo, me resulta raro que no te muestre todos los spool, ya que en si lo agrupo, intenta con las siguientes dos querys:

Esta ya la habia colocado pero el problema era que el id no lo mostraba con su registro correcto pero pruebala:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
	id_proyectof,
	n_spool,
	grid,
	MAX(revision) AS revis
FROM
	spool
WHERE
	id_spool NOT IN (
		SELECT
			fid_spool
		FROM
			wp_fabrication
	)
AND id_proyectof = '1'
GROUP BY
	n_spool

Esta de aca es basada en la ultima pero mas meticulosa a ver si te muestra todos los spool.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SELECT
	sp.id_spool,
	sp.id_proyectof,
	sp.n_spool,
	sp.grid,
	sp.revision
FROM
	spool sp
JOIN (
	SELECT
		n_spool,
		MAX(revision) AS revis
	FROM
		spool
	GROUP BY
		n_spool
) sp2 ON sp2.n_spool = sp.n_spool
WHERE
	sp.id_spool NOT IN (
		SELECT
			fid_spool
		FROM
			wp_fabrication
	)
AND sp.revision IN (sp2.revis)
AND sp.id_proyectof = '1'

nos cuentas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Mostrar los registros con el numero mas alto

Publicado por daniel (6 intervenciones) el 20/12/2016 17:09:19
muchas gracias esta si me funciono, lo unico raro es que cuando pongo la query en el phpmyAdmin no tiene problemas en la consulta pero cuando pongo esa misma query en java me marca que la columna revision no existe.
Por lo que hice fue cambiar
1
MAX(revision) AS revis
por
1
MAX(revision) AS revision
y ya funciono en mi programa.

De nuevo muchas gracias Kip
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar