Foros del Web » Programando para Internet » PHP »

Consulta SQL casi imposible

Estas en el tema de Consulta SQL casi imposible en el foro de PHP en Foros del Web. Hola, Mira lo que pasa es que requiero hacer una consulta a una tabla que cumpla con varios requisitos. Tengo una tabla llamada P de ...
  #1 (permalink)  
Antiguo 27/07/2005, 17:15
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 12 años, 5 meses
Puntos: 5
Consulta SQL casi imposible

Hola,

Mira lo que pasa es que requiero hacer una consulta a una tabla que cumpla con varios requisitos.

Tengo una tabla llamada P de la cual quiero seleccionar un registro, de forma aleatoria eso ya lo puedo hacer, ademas que sea un registro que no haya salido antes y que no coincidan dos campos de la consulta anterior, la consulta que estoy intentando es esta:

$sql = "SELECT * FROM P WHERE `id` = '$numero' and `Categoria` != '$last_cat' and `Genero` != '$last_gene' ";

Como dije eso de el numero aleatorio ya me sale pues en un tema de este foro me dieron la solucion, pero lo de que no coincida con dos campos de la consulta anterior y que ademas sea un registro que no haya salido antes francamente no se como hacerlo de manera correcta ya que poniendo la consulta como la tengo tarda mucho y no me da el resultado que necesito.

Alguna idea?

Saludos
  #2 (permalink)  
Antiguo 27/07/2005, 17:20
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Mensajes: 753
Antigüedad: 12 años, 7 meses
Puntos: 4
Cita:
Iniciado por hieloverde
Hola,

Mira lo que pasa es que requiero hacer una consulta a una tabla que cumpla con varios requisitos.

Tengo una tabla llamada P de la cual quiero seleccionar un registro, de forma aleatoria eso ya lo puedo hacer, ademas que sea un registro que no haya salido antes y que no coincidan dos campos de la consulta anterior, la consulta que estoy intentando es esta:

$sql = "SELECT * FROM P WHERE `id` = '$numero' and `Categoria` != '$last_cat' and `Genero` != '$last_gene' ";

Como dije eso de el numero aleatorio ya me sale pues en un tema de este foro me dieron la solucion, pero lo de que no coincida con dos campos de la consulta anterior y que ademas sea un registro que no haya salido antes francamente no se como hacerlo de manera correcta ya que poniendo la consulta como la tengo tarda mucho y no me da el resultado que necesito.

Alguna idea?

Saludos
mira, una forma sencilla es ir anotando lso que ya salieron...
__________________
Visita mi comprador de móviles
  #3 (permalink)  
Antiguo 27/07/2005, 17:23
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
en una consulta no se puede, salvo que vayas guardando en una tabla los registros sacados anteriormente
  #4 (permalink)  
Antiguo 27/07/2005, 17:27
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Mensajes: 753
Antigüedad: 12 años, 7 meses
Puntos: 4
Cita:
Iniciado por claudiovega
en una consulta no se puede, salvo que vayas guardando en una tabla los registros sacados anteriormente
es lo que le digo, luego del select, un insert.... update,
__________________
Visita mi comprador de móviles
  #5 (permalink)  
Antiguo 27/07/2005, 17:28
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 12 años, 5 meses
Puntos: 5
Pero donde los anoto?, la cosa es que salgan los que no se an visto y eso me causa problemas por todos los requisitos que debe tener la consulta vaya a parte de que se vuelve lenta llega a haber veces que no sale ninguno intente con un bucle, para que hasta que no sea verdadera la consulta se ejecute pero esto mismo es lo que vuelve lenta la consulta.

Saludos
  #6 (permalink)  
Antiguo 27/07/2005, 17:29
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
asi es, y luego una consulta con subconsultas para discriminar
  #7 (permalink)  
Antiguo 27/07/2005, 17:32
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Mensajes: 753
Antigüedad: 12 años, 7 meses
Puntos: 4
Cita:
Iniciado por hieloverde
Pero donde los anoto?, la cosa es que salgan los que no se an visto y eso me causa problemas por todos los requisitos que debe tener la consulta vaya a parte de que se vuelve lenta llega a haber veces que no sale ninguno intente con un bucle, para que hasta que no sea verdadera la consulta se ejecute pero esto mismo es lo que vuelve lenta la consulta.

Saludos
mira, despues de cada select que hagas, guardas los datos en otra tabla, o creas una tabla de estados que este relacionada a esta y solo vas cambiando de NO LEIDO A LEIDO , o algo asil. me entiendes
__________________
Visita mi comprador de móviles
  #8 (permalink)  
Antiguo 27/07/2005, 17:34
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 12 años, 5 meses
Puntos: 5
Entonces hago una consulta para los que no han salido, pero como le hago la subconsulta a estos datos unicamente, digo me pondrias algun ejemplo para luego sacar los datos que no coincidan.
  #9 (permalink)  
Antiguo 27/07/2005, 17:40
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Mensajes: 753
Antigüedad: 12 años, 7 meses
Puntos: 4
Cita:
Iniciado por hieloverde
Entonces hago una consulta para los que no han salido, pero como le hago la subconsulta a estos datos unicamente, digo me pondrias algun ejemplo para luego sacar los datos que no coincidan.
si es con estados

select * from tabla1 where condiciones estado<>'YA PASO'

oi con otra tabla donde insertas

select * from tabla1 where condiciones and campo not in(select * from tabla2 condiciones)

nose si me exlique bien
__________________
Visita mi comprador de móviles
  #10 (permalink)  
Antiguo 27/07/2005, 17:41
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Sacar desde tabla_base un registro que no esté en la tabla id_guardado

select * from tabla_base where id not in (select id from id_guardado)

grabar el nuevo que ha salido

insert into id_guardado values ($id_nuevo);
  #11 (permalink)  
Antiguo 27/07/2005, 17:55
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 12 años, 5 meses
Puntos: 5
Si, muchas gracias ya entiendo, francamente eso no se me habia ocurrido

gracias claudiovega y xcars por la ayuda
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 23:16.