ASP - INSER INTO Fuera de rango

 
Vista:

INSER INTO Fuera de rango

Publicado por skp (7 intervenciones) el 30/03/2004 12:11:26
Hola: Tengo un problemita, tengo esto: strSQL="INSERT INTO indice (nombre,mail) SELECT nombre,mail FROM hm" La sintaxis está bien, pero el problemita es que me agrega en la tabla todos los registros de los campos nombre y mail. Me hace como un bucle de todos los existentes y los agrega. Solo quiero que me agregue el que ingrese en ese momento.
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

usa "NOT IN"

Publicado por polx - peru (132 intervenciones) el 31/03/2004 02:21:05
si tu campo nombre es unico(llave).. debes decirle que te agrege los que no estan en tu tabla principal con la instruccion NOT IN

strSQL="INSERT INTO indice (nombre,mail) SELECT nombre,mail FROM hm WHERE nombre NOT IN (SELECT nombre FROM indice)

suerte
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

RE:usa

Publicado por skp (7 intervenciones) el 31/03/2004 04:13:32
Hola:

No, no es único pero calculo que la instrucción NOT IN sirve igual no?
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

prueba

Publicado por polx - peru (132 intervenciones) el 31/03/2004 18:31:11
amigo prueba esa instruccion.. o sino busca mas documentacion de NOT IN.. q resuminedo es para decirle que deseas registros de una tabla que no estan en otra que tu especificas de acuerdo a una condición (siempre y cuando ambas tablas tengan la misma estructura)
suerte
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

¿NOT IN? eso está algo volado, mira esto.

Publicado por Ayudante (255 intervenciones) el 01/04/2004 06:47:26
Primero, debes saber que un select de cierta manera es un bucle ya que trae todos los registros de una consulta, hace lectura secuencial para armar la visualización final.

Segundo, si lo que quieres es ingresar el mail desde "hm" a "indice" lo debes hacer de esta forma:

Dices que vas a ingresar el que estás ingresando, entonces, si hm tiene el código o llave única para hacer la consulta, debes hacer un select con "where", por si no lo sabes es muy, pero muy importante esta palabra, apuntala, que no se te olvide, porque te acompañará por siempre.

Ahora, si no quieres que el correo se repita, bueno, vamos a tener que bajar el "performance" de la base de datos haciendo una triple instrucción como lo dice "polx - peru", donde vendría a ser de la forma:
insert into indice (nombre, mail) select nombre, mail from hm where hm.id = XXXX and mail not in (select mail from indice)

Eso creo que te agrega calidad en tu programa, pero le quita rendimiento a la BD, imaginen esto en una BD de al menos 500000 registros.
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