Foros del Web » Programando para Internet » PHP »

Select into

Estas en el tema de Select into en el foro de PHP en Foros del Web. Estoy haciendo un select into de dos tablas, para que me pase a otra tabla una serie de registros.Para realizarlos de doy una serie de ...
  #1 (permalink)  
Antiguo 15/03/2010, 05:21
 
Fecha de Ingreso: septiembre-2008
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 0
Select into

Estoy haciendo un select into de dos tablas, para que me pase a otra tabla una serie de registros.Para realizarlos de doy una serie de sentencias y que me pase los registros que coincidan los id.Al ejecutarlo me da un error que dice más o menos que el numero de registros seleccionados el mayo que el numero quie se quiere ingresar.El script es el siguiente:
$query="Insert into tutoria10(id_curso,finalizacion,nif,accion,alumnos ,profesor)select cur09.id_curso,cur09.finalizacion,cur09.accion,alu mnos,cur09.profesor,acciones.nif,acciones.id_curso [/U]from cur09,acciones WHERE cur09.pasados='0' and finalizacion between '$fecha1' and '$fecha2' and tipo !='presencial' and tipo !='semipresencial' and cur09.id_curso=acciones.id_curso";
$r = mysql_query($query)or die (mysql_error());

$alumnos=0;
$alumnos>$alumnos;
$alumnos++;


?>
La seleccion de registros a pasar se determina por la línea: cur09.id_curso=acciones.id_curso.El id_curso de acciones es el campo relacional con la tabla cur09, lo selecciono en la linea acciones.id_curso.Pero me dice que el numero de row no es igual en el inser que en el select.
En este tema llevo algún tiempo y no consigo dar con la forma de hacerlo.SOS.Gracias
  #2 (permalink)  
Antiguo 15/03/2010, 06:46
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 10 años, 7 meses
Puntos: 19
Respuesta: Select into

Select Into es una sentencia en MySQL? Que yo sepa es INSERT INTO y SELECT * FROM. Creo que no se pueden unir. Primero mandas una, punto y coma y luego mandas la otra. De hecho desde PHP hay que mandar una cada vez.

No se si con MySQL hay sentencias de trasbase de tablas (no lo uso enfocado a esa manera) pero ya que pregutnas en el foro de PHP te digo como se hace en PHP:

1. Cargas los datos con SELECT * FROM
2. Haces la sentencia MySQL del Insert con PHP
3. Mandas la sentencia MySQL de INSERT INTO.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #3 (permalink)  
Antiguo 15/03/2010, 07:32
 
Fecha de Ingreso: septiembre-2008
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select into

Me parece que he tenido un error al escribir mi mensaje: efectivamente lo correcto es insert into...select.Trabajo con php, de hecho el script está en este lenguaje.
El problema es que al ejecutarlo, como en la sentencia select hay dos id_curso, uno para la tabla cur09 y otro de la tabla acciones, que son las claves de relación,me da uno error pues en el insert into sólo hay un id_curso.
Por favor explícame un poco más como tú lo harías.
Graciasw
  #4 (permalink)  
Antiguo 15/03/2010, 08:08
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 10 años, 7 meses
Puntos: 19
Respuesta: Select into

Hum, esque no se hasta que punto puedes ir cargando datos de dos tablas distintas. No hay ninguna relacción entre ellas. Yo te digo que las cargues por separado.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #5 (permalink)  
Antiguo 15/03/2010, 10:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select into

Me puedes decir como cargalas por separado?.Gracias
  #6 (permalink)  
Antiguo 15/03/2010, 10:26
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 10 años, 7 meses
Puntos: 19
Respuesta: Select into

Por separado = En sentencias separadas.

La pregunta no es como cargarlas por separado, es como tiene que interpetar MySQL que quieres que cargue las filas de tablas distintas (sabiendo que las filas de una tabla pueden ser 100 y las de la otra 9, o incluso estar vacía).

A ver le estas diciendo a la base de datos que te devuelva una serie de campos de la tabla cur09.acciones (por sintaxis, CUR09 es la base de datos, y Acciones es la tabla), si los datos concuerdan en

cur09.pasados='0' (por sintaxis Cur09 es la tabla y pasados es el campo, es decir quieres cargar datos de una tabla siempre y el registro que están buscando de la tabla tenga la condición de que el registro de otra tabla sea 0)
and
finalizacion between '$fecha1' and '$fecha2' (por sintaxis finalizacion es un campo)
and
tipo !='presencial'
and
tipo !='semipresencial'
and
cur09.id_curso=acciones.id_curso

no le veo mucho sentido.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #7 (permalink)  
Antiguo 15/03/2010, 10:58
 
Fecha de Ingreso: septiembre-2008
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select into

Me explico algo mejor: le digo que saque de las tablas cur09 y acciones una serie de campos y los incluya enn otra tabla, que se llama tutoría10.En la tabla cur09 le digo que sean entre una fecha y otra y que pasasos sea cero(para que no lo vuelva a pasar en sucesivas inser into select,esto se actualiza con un update) que los cursos no sean ni presenciales,ni semipre. y que lo haga mediante el campo compartido id_curso.
Espero haberme explicado.Muchas gracias por tu ayuda.
  #8 (permalink)  
Antiguo 15/03/2010, 14:14
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 10 años, 7 meses
Puntos: 19
Respuesta: Select into

Como te he dicho, Extraes los datos de cur09 con:

Código SQL:
Ver original
  1. $return = mysql_query("Codigo SQL");
  2. $items = array();
  3. while($row = mysql_fetch_assoc($return)){
  4.  $items[] = $row;
  5. }

Y los vuelves a meter en la base de datos con consultas INSERT INTO iterando (yendo elemento a elemento) sobre la base de datos. No hay que complicarse mucho para hacer estas cosas. Capaz que MySQL tiene un metodo mejor para hacer esto, pero si no lo conoces y no sabes donde buscarlo hay que buscar rutas alternativas.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it

Etiquetas: select
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 07:29.