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

Ayuda please!!!

Estas en el tema de Ayuda please!!! en el foro de Mysql en Foros del Web. Tengo problemas para unir dos queries que por separados funconan bien. La ides es mostrar a la persona que ha arrendado mas peliculas y las ...
  #1 (permalink)  
Antiguo 04/10/2007, 07:46
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 21 años, 5 meses
Puntos: 2
Ayuda please!!!

Tengo problemas para unir dos queries que por separados funconan bien.
La ides es mostrar a la persona que ha arrendado mas peliculas y las peliculas que ha arrendado.

Con este query obtengo a la persona que ha arrendado mas peliculas:

Código:
SELECT customer_id, first_name, last_name, antal FROM customer INNER JOIN 
	(SELECT COUNT(customer_id) AS antal, customer_id AS temp FROM rental  GROUP BY  customer_id ) AS temp_table WHERE customer_id = temp_table.temp ORDER BY antal DESC LIMIT 1;
de este query obtengo el nombre y la cantidad de veces que ha arrendado peliculas (46 veces).

Con este otro query obtengo los nombres de las peliculas que la persona ha arrendado:
Código:
SELECT DISTINCT title FROM film WHERE film_id IN
	(
		SELECT film_id FROM inventory WHERE inventory_id IN
		(
			SELECT inventory_id from rental WHERE customer_id = '585'
		)
	);
Si se fijan en este query he comparado el customer_id con 585, es en esta parte donde deberia colocar el primer query.

Asi me quedan los dos queries juntos:

Código:
SELECT title FROM film WHERE film_id IN
	(SELECT film_id FROM inventory WHERE inventory_id IN
		(SELECT inventory_id FROM rental WHERE customer_id IN
			(SELECT customer_id FROM customer INNER JOIN
				(SELECT COUNT(customer_id) AS antal, customer_id AS temp FROM rental GROUP BY customer_id) AS temp_table WHERE customer_id = temp_table.temp ORDER BY antal DESC LIMIT 1)
		)
	);
Al ejecutar este query recibo este error:
Código:
Error Code : 1235
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
(0 ms taken)
Si elimino el LIMIT 1 el query me da como resultado la lista con los nombres de las peliculas que hay en la bd.
Como lo hago entonces para poder recivir solo el nombre de la persona que ha arrendado mas y las peliculas que ha arrendado?


Como siempre si necesitan mas info, con gusto la colocare.

Gracias

Cómo hacer preguntas de manera inteligente

Última edición por BrujoNic; 07/10/2007 a las 10:03
  #2 (permalink)  
Antiguo 05/10/2007, 10:19
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Ayuda please!!!

Si quieres sacar el nombre de la persona y los titulos de las películas, debes ponerlo en la primera consulta. Ahora sólo tienes el título, por eso no te sale la persona.

Prueba a poner

Código PHP:
SELECT customer_idtitle FROM customerfilm WHERE film_id IN........ 
y si el resto está bien debería salir el nombre y las peliculas que ha visto.

Suerte
__________________
Uno para todos y todos para uno

Última edición por BrujoNic; 07/10/2007 a las 10:03
  #3 (permalink)  
Antiguo 07/10/2007, 04:53
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: Ayuda please!!!

Gracias por tu respuesta,
ya habia intentado recuperar el customer_id en el primer query pero sql se cuelga, es como si intentara leer demasiada informacion y se cuelga.

No se por que sucede eso.
  #4 (permalink)  
Antiguo 07/10/2007, 05:30
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: Ayuda please!!!

lo que obtengo ahora es la lista de las personas que han visto cada pelicula, por ejemplo un lista con la pelicula N y una lista con las personas que han visto la pelicula. O sea me busca los nombres de las personas que han visto las peliculas.

title customer_id first_name

NNN 1 aaaa
NNN 2 bbbb
NNN 3 ccccc
MMM 1 aaaa
MMM 2 bbbb

etc...
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:39.