Ir al contenido


Foto

hacer un select antes de un insert


  • Por favor identifícate para responder
5 respuestas en este tema

#1 Spawn14

Spawn14

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 21 septiembre 2013 - 09:35

hola amigos, soy nuevo en el foro y la verdad necesito un poco de su ayuda...

tengo un codigo que inserta ok en una tabla, y en eso no tengo problemas, el asunto es que tengo un select dependiente, por ende me inserta el id y no el nombre del campo, lo que necesito es poder insertar el nombre del campo, estuve buscando con select antes de insert pero la verdad... no e pillado mucho...

envio las tablas...

aqui es donde tengo que insertar los datos

CREATE TABLE IF NOT EXISTS `auto_venta` (
  `sku_avta` int(11) NOT NULL AUTO_INCREMENT,
  `ppu_avta` varchar(15) NOT NULL,
  `nuev_avta` varchar(5) NOT NULL,
  `idtip_avta` int(11) NOT NULL,
  `tip_avta` varchar(250) NOT NULL,
  `idmar_avta` int(11) NOT NULL,
  `mar_avta` varchar(250) NOT NULL,
  `idmod_avta` int(11) NOT NULL,
  `mod_avta` varchar(250) NOT NULL,
  `ver_avta` varchar(250) NOT NULL,
  `carr_avta` varchar(250) NOT NULL,
  `ano_avta` int(11) NOT NULL,
  `tpre_avta` varchar(100) NOT NULL,
  `pre_avta` varchar(150) NOT NULL,
  `cc_avta` varchar(150) NOT NULL,
  `pot_avta` varchar(250) NOT NULL,
  `col_avta` varchar(250) NOT NULL,
  `tipkms_avta` varchar(15) NOT NULL,
  `kms_avta` varchar(100) NOT NULL,
  `mot_avta` varchar(250) NOT NULL,
  `dir_avta` varchar(250) NOT NULL,
  `com_avta` varchar(250) NOT NULL,
  `tec_avta` varchar(250) NOT NULL,
  `puer_avta` varchar(250) NOT NULL,
  `wd_avta` varchar(250) NOT NULL,
  `airb_avta` varchar(250) NOT NULL DEFAULT 'No',
  `alarm_avta` varchar(250) NOT NULL DEFAULT 'No',
  `alza_avta` varchar(250) NOT NULL DEFAULT 'No',
  `aire_avta` varchar(250) NOT NULL DEFAULT 'No',
  `cat_avta` varchar(250) NOT NULL DEFAULT 'No',
  `cierre_avta` varchar(250) NOT NULL DEFAULT 'No',
  `esp_avta` varchar(250) NOT NULL DEFAULT 'No',
  `abs_avta` varchar(250) NOT NULL DEFAULT 'No',
  `llan_avta` varchar(250) NOT NULL DEFAULT 'No',
  `rad_avta` varchar(250) NOT NULL DEFAULT 'No',
  `tra_avta` varchar(250) NOT NULL DEFAULT 'No',
  `unic_avta` varchar(250) NOT NULL DEFAULT 'No',
  `tit_avta` longtext NOT NULL,
  `des_avta` longtext NOT NULL,
  `ruta1` varchar(250) NOT NULL,
  `ruta2` varchar(250) NOT NULL,
  `ruta3` varchar(250) NOT NULL,
  `ruta4` varchar(250) NOT NULL,
  `ruta5` varchar(250) NOT NULL,
  `extra_avta` varchar(250) NOT NULL,
  PRIMARY KEY (`sku_avta`),
  UNIQUE KEY `sku_avta` (`sku_avta`),
  UNIQUE KEY `ppu_avta` (`ppu_avta`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;


esta es la de categoria
CREATE TABLE IF NOT EXISTS `categoria` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `opcion` varchar(250) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_categoria` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;



marca

CREATE TABLE IF NOT EXISTS `marca` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `opcion` varchar(250) NOT NULL,
  `relacion` int(11) NOT NULL DEFAULT '0',
  UNIQUE KEY `id_marca_2` (`id`,`opcion`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=78 ;



modelo

CREATE TABLE IF NOT EXISTS `modelo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `opcion` varchar(250) NOT NULL,
  `relacion` int(11) NOT NULL,
  UNIQUE KEY `id_modelo` (`id`),
  UNIQUE KEY `nom_modelo` (`opcion`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;


bueno, de verdad espero me puedan ayudar... saludos :cry:

  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 23 septiembre 2013 - 09:01

si ya tienes el id y quieres insertar el nombre, pues es muy sencillo. Puedes hacerlo con un select de la siguiente manera:



INSERT
  INTO TABLADESTINO
            (CAMPONOMBRE)
SELECT CAMPONOMBRE
    FROM TABLAORIGEN
WHERE IDENTIFICADOR = ID





  • 0

#3 Spawn14

Spawn14

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 23 septiembre 2013 - 09:54

Y para la inserción de los otros datos?
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 23 septiembre 2013 - 10:27

¿otros datos? podrías explicar un poco más que datos recibes y en qué tablas de las que indicaste quires grabarlos?
  • 0

#5 Spawn14

Spawn14

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 23 septiembre 2013 - 01:02

mira, en realidad lo que necesito es:

cuando inserto en la tabla auto_venta, que es la primera, por el momento me esta insertando solo los ids de las tablas categoria, marca y modelo, entonces lo que necesito es que al insertar en la tabla, ademas de insertar los ids me inserte los nombres de las otras tablas...

por ejemplo si el id de categoria es 1 y se inserta 1, ademas que me inserte el nombre que corresopnde a Auto.

en sql lo hice con update

y me resulto esto...

insert into auto_venta
(sku_avta, ppu_avta, nuev_avta, idtip_avta, tip_avta, idmar_avta, mar_avta, idmod_avta, mod_avta,
    ver_avta, carr_avta, ano_avta, tpre_avta, pre_avta, cc_avta, pot_avta, col_avta, tipkms_avta,
    kms_avta, mot_avta, dir_avta, com_avta, tec_avta, puer_avta, wd_avta, airb_avta, alarm_avta,
    alza_avta, aire_avta, cat_avta, cierre_avta, esp_avta, abs_avta, llan_avta, rad_avta, tra_avta,
    unic_avta, tit_avta, des_avta, ruta1, ruta2, ruta3, ruta4, ruta5)
values
    ('105','CBCB-45', 'No', '1', '', '16', '', '7', '', '1.6', 'Sedan', '2010',
    '$', '4.500.000', '1.6', 'turbo', 'Rojo', 'kms', '10.150', '1.6', 'Asistida', 'Bencina',
    'Electrico', '4', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si',
    'Si', 'Si', 'No', 'Hyundai Accent', 'Vehiculo en perfectas condiciones', 'images', 'images',
    'images', 'images', 'images')



update auto_venta set
tip_avta='Auto',
mar_avta='Hyundai',
mod_avta='Scoupe'
where ppu_avta='CBCB-45'


el cual me inserta, pero el tema es que los datos como auto, hyundai, scoupe estan en otras tablas...

saludos
  • 0

#6 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 23 septiembre 2013 - 03:19

sencillo, para eso debes extraer la información de un select e insertarlo directamente: Por ejemplo:


insert into auto_venta
  (sku_avta, ppu_avta, nuev_avta, idtip_avta, tip_avta, idmar_avta, mar_avta, idmod_avta, mod_avta,
    ver_avta, carr_avta, ano_avta, tpre_avta, pre_avta, cc_avta, pot_avta, col_avta, tipkms_avta,
    kms_avta, mot_avta, dir_avta, com_avta, tec_avta, puer_avta, wd_avta, airb_avta, alarm_avta,
    alza_avta, aire_avta, cat_avta, cierre_avta, esp_avta, abs_avta, llan_avta, rad_avta, tra_avta,
    unic_avta, tit_avta, des_avta, ruta1, ruta2, ruta3, ruta4, ruta5)     
SELECT '105','CBCB-45', 'No', '1', '', '16', '', '7', '', '1.6', 'Sedan', '2010',
    '$', '4.500.000', '1.6', 'turbo', 'Rojo', 'kms', '10.150', '1.6', 'Asistida', 'Bencina',
    'Electrico', '4', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si', 'Si',
    'Si', 'Si', 'No', CAMPONOMBREAUTO, 'Vehiculo en perfectas condiciones', 'images', 'images',
    'images', 'images', 'images'
  FROM TABLA_DE_AUTOS




  • 0




IP.Board spam blocked by CleanTalk.