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

Excluir registros votaciones

Estas en el tema de Excluir registros votaciones en el foro de Mysql en Foros del Web. Buenas llevo 1 dias dandole vueltas a una consulta que no me sale sobre votaciones. Son dos tablas. Peliculas y votaciones. Peliculas: id,titulo Votaciones: id,ip ...
  #1 (permalink)  
Antiguo 08/02/2013, 23:56
 
Fecha de Ingreso: abril-2010
Mensajes: 62
Antigüedad: 14 años
Puntos: 0
Excluir registros votaciones

Buenas llevo 1 dias dandole vueltas a una consulta que no me sale sobre votaciones.

Son dos tablas. Peliculas y votaciones.

Peliculas: id,titulo
Votaciones: id,ip

Ahora necesito seleccionar al azar 1 pelicula que NO haya sido votada por una ip ficticia 123.34.5.6

Mi consulta

$ip = 123.34.5.6;

SELECT * from peliculas,votos WHERE peliculas.id = votos.id AND ip<>$ip ORDER BY RAND() LIMIT 1

Esta consulta me devuelve una pelicula cuya ip no sea esa pero tambien me devuelve la pelicula que no tiene esa ip adjudicada. Por ejemplo:

Tabla votos:

10, 123.34.5.6
10, null


Necesito que me descarte las filas cuyo id sea 10 pero claro sin poner id<>10.


1millón de gracias si alguien me ayuda
  #2 (permalink)  
Antiguo 09/02/2013, 05:09
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: Excluir registros votaciones

Si tienes dos filas con ID 10, pero sólo descartas la que tiene la IP indicada, la otra te la seguirá devolviendo. Tus condiciones sólo implican a un único registro y no a ambos. Sin el ID no servirá para lo que quieres.
En realidad el problema es que estás haciendo un insert muy malo en algún momento, porque si una película no tiene votos no debería existir en la tabla de votaciones, o por lo menos no debería ser NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 09/02/2013 a las 05:22
  #3 (permalink)  
Antiguo 09/02/2013, 05:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Excluir registros votaciones

Estoy de acuerdo totalmente con las aclaraciones de gnzsoloyo. ¿Por qué tienes esos registros con NULL? No obstante, tal vez algo así (no lo he probado).
Código MySQL:
Ver original
  1. SELECT t.id, t.pelicula
  2. FROM titulos t
  3. WHERE id !=
  4.   (SELECT id
  5.  FROM votaciones
  6.  WHERE ip =  '123.34.5.6')

Última edición por jurena; 09/02/2013 a las 06:12
  #4 (permalink)  
Antiguo 09/02/2013, 07:25
 
Fecha de Ingreso: abril-2010
Mensajes: 62
Antigüedad: 14 años
Puntos: 0
Respuesta: Excluir registros votaciones

Solución por si ha alguien le hace falta

SELECT * FROM peliculas WHERE id NOT IN (SELECT id FROM votos WHERE ip='$ip') ORDER BY RAND() LIMIT 1

Gracias por vuestras repuestas han sido de inspiración

Etiquetas: excluir, registros, select, tabla
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 03:51.