Foros del Web » Programando para Internet » PHP »

SELECT dentro de INSERT en SQL

Estas en el tema de SELECT dentro de INSERT en SQL en el foro de PHP en Foros del Web. ¡Buenas a tod@s! Pues bien, tengo una tabla para un sistema de notas con los siguientes campos: id, text, date, position. La posición será un ...
  #1 (permalink)  
Antiguo 02/09/2012, 13:42
Avatar de Karmac  
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
SELECT dentro de INSERT en SQL

¡Buenas a tod@s! Pues bien, tengo una tabla para un sistema de notas con los siguientes campos: id, text, date, position.
La posición será un número por el cual ordenarlos, de modo que si yo inserto una nueva fila la posición será el número más alto + 1, mostrandose así en último lugar.

Lo que hago en PHP es seleccionar la posición más alta, sumarle 1 y insertar mi tabla. ¿Habría algún modo de hacer esto en una sola consulta? Gracias.
  #2 (permalink)  
Antiguo 02/09/2012, 14:09
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: SELECT dentro de INSERT en SQL

master, para eso estan los atributos incrementables.
Declara posición como incrementable y por cada tupla ( fila ) que tengas en tu tabla se aumenta 1 para ese campo.
  #3 (permalink)  
Antiguo 02/09/2012, 14:11
Avatar de Karmac  
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
Respuesta: SELECT dentro de INSERT en SQL

Cita:
Iniciado por rodrigo791 Ver Mensaje
master, para eso estan los atributos incrementables.
Declara posición como incrementable y por cada tupla ( fila ) que tengas en tu tabla se aumenta 1 para ese campo.
Se me olvido decir que también uso el metodo sortable de jQuery UI, así que las posiciones pueden tener un orden cualquiera.

¿Existe alguna forma de ordenar las filas de la tabla o conseguir lo que busco?
Saludos.
  #4 (permalink)  
Antiguo 02/09/2012, 14:20
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: SELECT dentro de INSERT en SQL

a ver si entiendo, vos en tu tabla queres tener algo asi?



id, text, date, position
1 asd , fecha, 1
1 asa , fecha, 2
1 gad , fecha, 3
1 hfd , fecha, 4

porque si decis que en la nueva fila que se inserta queres que la posición sea + 1 de la ultima posicion agregada, o sea la que esta arriba entonces tiene que ser como te lo puse.
Entonces como vos decis "La posición será un número por el cual ordenarlos" lo unico que tenes que hacer algo asi por ejemplo:
Código PHP:
Ver original
  1. $consulta = "SELECT * FROM tabla ORDER BY posicion";

y se te van a mostrar las filas ordenadas por ese campo como queres, no tiene mas vuelta.
  #5 (permalink)  
Antiguo 02/09/2012, 14:31
Avatar de Karmac  
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
Respuesta: SELECT dentro de INSERT en SQL

Sí eso ya lo se, pero pon que yo tenga la siguiente tabla:

id, text, date, position
1 aaa fecha 3
2 bbb fecha 2
3 ccc fecha 4
4 ddd fecha 1

Ahora para insertar una nueva fila, tengo que hacer "SELECT MAX(position)", y el valor +1 utilizarlo en mi consulta de insercion, lo cual hago en dos consultas, una para obtener la posicion mas alta y otra para insertar.
¿Puedo unificarlo en una?
  #6 (permalink)  
Antiguo 02/09/2012, 14:36
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: SELECT dentro de INSERT en SQL

y yo creo que no, porque en donde se vio algo como esto? select max(position) ...insert .... ? no existe eso.
Se supone que diferentes tipos de consultas, 1 para insertar y la otra para seleccionar, hacelo por separado, suerte
  #7 (permalink)  
Antiguo 02/09/2012, 15:42
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: SELECT dentro de INSERT en SQL

De hecho, sí es posible hacer "subconsultas" usando insert, sólo hay que investigar un poco (http://dev.mysql.com/doc/refman/5.0/...rt-select.html) o preguntar en el lugar adecuado (FDW -> Bases de datos -> MySQL), porque está muy comprobado que quienes sabemos un poco de PHP no siempre tenemos suficientes conocimientos de MySQL.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 02/09/2012, 15:49
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: SELECT dentro de INSERT en SQL

muy bien, la verdad no tenia idea, buen aporte.
  #9 (permalink)  
Antiguo 02/09/2012, 16:28
Avatar de Karmac  
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
Respuesta: SELECT dentro de INSERT en SQL

Cita:
Iniciado por Triby Ver Mensaje
De hecho, sí es posible hacer "subconsultas" usando insert, sólo hay que investigar un poco (http://dev.mysql.com/doc/refman/5.0/...rt-select.html) o preguntar en el lugar adecuado (FDW -> Bases de datos -> MySQL), porque está muy comprobado que quienes sabemos un poco de PHP no siempre tenemos suficientes conocimientos de MySQL.
Siento lo del subforo, no sabía de su existencia
Es una aproximación a lo que busco, la cosa es que no todos los valores vienen del select, y esa operación creo que no habilita meter valores que no vengan de otra tabla.

Saludos.
PD: si alguien puede mover el tema a MySQL… gracias.

Etiquetas: insert, select, sql, 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 07:06.