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

Necesito ayuda con este tipo de consulta

Estas en el tema de Necesito ayuda con este tipo de consulta en el foro de Mysql en Foros del Web. Hola, pues tengo un problema, mi objetivo es mostrar como resultado las categorias en la cual el cliente no se ha registrado. Ejemplo Código PHP: ...
  #1 (permalink)  
Antiguo 07/04/2006, 10:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 148
Antigüedad: 19 años
Puntos: 0
Necesito ayuda con este tipo de consulta

Hola, pues tengo un problema, mi objetivo es mostrar como resultado las categorias en la cual el cliente no se ha registrado.

Ejemplo

Código PHP:
<?php
/*Luego de una consulta anterior, recojo las categorias en las cuales el cliente 
ya esta registrado, las paso a un array*/
$ver mysql_fetch_array($envio)

/*ok, las categorias que se incluyan en ese array, son las que quiero insertar 
en la consulta siguiente.. como si estuviera diciendo: 
"mostrar solo las categorias MENOS las categorias en la cual el cliente esta registrado"*/

/*Para ello hago la siguiente consulta: (si tuviese que.. hacer 
con una sola categoria, me seria mas facil */

/*Le digo que muestre las categorias MENOS 
la categoria en la cual el cliente ya esta registrado*/
$query "SELECT categoria FROM registros_cat WHERE categoria <> '$ver[categoria]'";
$envio mysql_query($query);
...
..

/* Pero claro.. si yo en esa consulta, debo insertar luego del "<>" 
varias categorias en vez de una como hice en el ejemplo anterior.. como haria??*/
?>
Mi problema surge ahi. Supongamos que el cliente se ha registrado en 5 categorias, en vez de "1" ¿como las incorporo en aquella consulta?

Me pueden ayudar??

Gracias y Saludos!
__________________
(8)Esta es la numero uno, que te sigue a todas partes,
siempre con sus estandartes,
y un grito de corazon, RACING CAMPEON
RACING CAMPEON, en el este y el oeste,
en el norte y en el sur, brillara blanca y celeste la academia RACING CLUB y la acade, y la acade... (8)
  #2 (permalink)  
Antiguo 07/04/2006, 10:23
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 18 años, 4 meses
Puntos: 1
Tendrías que utilizar una consulta como esta:

Código PHP:
<?
$consulta1 
"SELECT id FROM registros_cat WHERE ....."//Esta es la consulta para saber cuales son las categorias en las que el cliente esta registrado
$consulta2 "SELECT categoria FROM registros_cat WHERE categoria NOT IN  ($consulta1)"//Fijate que utilize $consulta1 para armar $consulta2, no es necesario ejecutarla antes
$resultado mysql_query($consulta2); //Esto debería devolverte las categorias en las que no esta registrado el usuario.
?>
Espero que te sirva.
Saludos.
__________________
¿Se me entiende la letra?
  #3 (permalink)  
Antiguo 07/04/2006, 14:40
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
seria mejor usar los joins
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #4 (permalink)  
Antiguo 10/04/2006, 11:31
 
Fecha de Ingreso: mayo-2005
Mensajes: 148
Antigüedad: 19 años
Puntos: 0
Hola, gracias por los ejemplos
Pues he probado de la manera que dijo Jorgito pero da error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in probar.php on line 36

La primer consulta que hago, va perfecto. pero cuando hago la segunda consulta da error. Verifico como en la primer consulta con mysql_num_rows() si existen resultados pues cuando lo hago en la segunda consulta, da error.

Nta: Yo en mi primer consulta.. muestro unos resultados a lavez esos resultados me sirven para la segunda consulta, ahi es donde falla.. cuando utilizo NOT IN ($query1)

Lo cual puede que esta mal el tipo de consulta que dijo Jorgito?? o quiza yo este poniendo mal algun que otro codigo..
__________________
(8)Esta es la numero uno, que te sigue a todas partes,
siempre con sus estandartes,
y un grito de corazon, RACING CAMPEON
RACING CAMPEON, en el este y el oeste,
en el norte y en el sur, brillara blanca y celeste la academia RACING CLUB y la acade, y la acade... (8)
  #5 (permalink)  
Antiguo 10/04/2006, 11:54
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 18 años, 4 meses
Puntos: 1
Podrías poner un código para saber cual es el error:

Código PHP:
<?
...
$consulta2 "SELECT categoria FROM registros_cat WHERE categoria NOT IN  ($consulta1)";
$resultado mysql_query($consulta2) or die(mysql_error());
...
?>
Asi tendría que imprimir en pantalla cual es el error en la consulta. Cuando sepas cual es el error lo posteas aca y vemos. También ayudaria saber como quedó tu script.
Saludos.
__________________
¿Se me entiende la letra?
  #6 (permalink)  
Antiguo 10/04/2006, 12:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 148
Antigüedad: 19 años
Puntos: 0
Error encontrado:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT categoria FROM equip WHERE n_cliente = 'VALOR')' at line 1

Pondre debajo mi Codigo asi se entiende mejor (resumido):

Código PHP:
<?php

/*Verifico si el cliente pepe (ejemplo) se encuentra registrado en alguna 
que otra categoria*/
$query "SELECT categoria FROM equip WHERE n_cliente = 'pepe'";
$envio mysql_query($query);
$resultado mysql_num_rows($envio);

if(
$resultado 0)
echo 
"El cliente esta registrado en las categorias";
...
..
..

/*Ahora si ese cliente se encuentra registrado en x categorias, 
tomo esos nombres para mostrar en cuales AUN no se ha registrado..*/

$query2 "SELECT nombre FROM categorias WHERE nombre NOT IN ($query)";
$envio2 mysql_query($query2);
$resultado2 mysql_num_rows($envio2);

if(
$resultado2 0)
echo 
"Aun podes registrarte en otras $resultado2 categorias";
...
..
..
Nta's:

Como ves.. en ambas query si o si debo mostrar resultados. Pero mi problema cuando llega?? pues cuando la query2 la relaciono con la query (primera)

Si yo por ejemplo, hiciese..

NOT IN 'historia'";

Funcionaria..

o

<> 'historia'";
Tambien..

Pero si son mas resultados, como bien dijiste podria relacionarla con la query1 directamente

NOT IN ($query1)

No funciona..
__________________
(8)Esta es la numero uno, que te sigue a todas partes,
siempre con sus estandartes,
y un grito de corazon, RACING CAMPEON
RACING CAMPEON, en el este y el oeste,
en el norte y en el sur, brillara blanca y celeste la academia RACING CLUB y la acade, y la acade... (8)
  #7 (permalink)  
Antiguo 10/04/2006, 14:26
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 18 años, 4 meses
Puntos: 0
evidentemente tu versiòn de mysql no soporta subquerys, haz caso al consejo de vevni y usa join.
  #8 (permalink)  
Antiguo 10/04/2006, 14:36
 
Fecha de Ingreso: mayo-2005
Mensajes: 148
Antigüedad: 19 años
Puntos: 0
Muchas gracias por la info a todos.

Por cierto, mi version de mysql es 4.0.26. A partir de cual version se podria utilizar subquery's ?? en mi caso (script) es recomendable, usar JOIN o SUBQUERY'S..??

Me gustaria si pudieran ayudarme a incorporar la sentencia JOIN en mi script, plz??

Aun asi, muchas gracias ;)
__________________
(8)Esta es la numero uno, que te sigue a todas partes,
siempre con sus estandartes,
y un grito de corazon, RACING CAMPEON
RACING CAMPEON, en el este y el oeste,
en el norte y en el sur, brillara blanca y celeste la academia RACING CLUB y la acade, y la acade... (8)
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 05:41.