INSERT con un SELECT en MySQL

Gracias a @ion por ayudarme con esto!

Que pasa si necesitamos insertar un registro en una tabla y  tenemos que sacar algún valor de de otra tabla para complementar, no se me ocurre una buena forma de explicarlo, mejor vayamos a un ejemplo:

Sabemos que “Fulano” es un vendedor y nos dice para que tienda trabaja. tendríamos por ejemplo:

Fulano, Tiendita X.

Lo complicado viene cuando necesitamos obtener de la tabla “Tiendas” la dirección del establecimiento, por poner un ejemplo, esto se puede hacer buscando manualmente en la tabla y copiando el id, pero imaginen que tienen que hacerlo para 3000 vendedores y la cosa cambia.

Para lograrlo, utilizamos un INSERT combinado con un SELECT, tomando como ejemplo lo anterior, armaremos la siguiente consulta:

INSERT INTO vendedores ( `nombre`, `tienda`,`direccion`) SELECT ‘Fulano’, `Tiendita`, tienda_id FROM tiendas WHERE tiendas.direccion=’Av. Siempreviva 10′

Para explicar un poco esto, la clave es ver en la parte del SELECT como estamos introduciendo valores estáticos como Fulano y Tiendita, pero para la dirección estamos haciendo una búsqueda en otra tabla e ingresando el id resultante, esto es algo muy útil. Como siempre, hay que adaptarlo a nuestras necesidades!

  • Pingback: fast cash()

  • Pingback: direct payday loans kentville nova scotia lender()

  • Pingback: drugrehabcentershotline.com drug rehab centers()

  • Miguel Alejandro

    Amigo necesito tu ayuda por favor tengo 4 tablas, primero esta productos, estas ya son sus relaciones de la tabla productos, color_producto tipo_producto, tamaño_producto (cada una tiene Id_xxx y nombre_color etc etc) tengo todo pero mas no puedo guardar correctamente, no se como tomar los valores de las relaciones y valga la redundancia relacionarlo con el nuevo producto
    esta es mas o menos la interfaz
    ID producto |____________| (caja texto)
    Producto |____________| (caja texto)
    Costo. |____________| (caja texto)
    Tipo >elige una..elige una..elige una..< (select obtiene las opciones de mi tabla "color")
    Ojala me puedas ayudar un poco

  • Zilus

    Pues simplemente haz query’s separados. Metes los id de las otras tablas.
    Ej.
    Tipo (otra tabla):
    A (id1)
    B(id2)
    C(id3)

    INSERT productos …, tipo… VALUES (… id1..)
    Y cuando los quieras mostrar, un simple inner join

  • Miguel Alejandro

    ola gracias por contstar el detalle es que en las relaciones ya no se van a ingresar datos si no que ya estan dados Id1=Chico entonces ese dato lo va a tomar de la tabla tipo no se si me explico

  • Zilus

    Si, esos datos los sacas con otro query.
    ej.

    <Php
    query
    while() {

  • Miguel Alejandro

    Asi es ya lo obtengo con un select de mi tabla tipo la cuestion es que relacione el producto con un tipo o un color sin repetir el id?

  • Zilus

    Es que tienes que sacar el id de esa tabla e insertarlo en tu tabla de productos.
    Después para relacionarlo haces un inner join

  • Miguel Alejandro

    Y eso como lo podria hacer no soy de pretextos pero esta es la primera base de datos que hago en la vida y estaba tan entusiasmado pero bueno o algun libro que me puedas recomendar

  • Zilus

    Fue lo primero que te mencione.
    Al hacer tu insert, usas el id que viene del campo “tipo”.

  • Miguel Alejandro

    Si tenias razón lo del select al estar vinculado con la tabla tipos ya trae el id del valor que le corresponde además nunca recordé que tenia la relación para los productos con esas caracterisitcas igual muchas gracias por tu ayuda igual si me pudieras recomendar algún libro sobre estos temas pues el doble de gracias!!

  • Zilus

    Google 😛

  • Miguel Alejandro

    ola amigo olle no podríamos ponernos en contacto tengo un par de dudas respecto del tema 🙂

  • Zilus

    Mandame un mail y platicamos!

  • Miguel Alejandro

    Ya te sigo en disqus ok

  • Miguel Alejandro

    mi correo es alexmiguelgonzalez@gmail.com y gracias por responder amigo, soy nuevo en disqus asi que no se como
    pero te dejo mi correo saz

Suscribete ahora

Suscríbete y recibe información valiosa sobre UI, UX, CX y otras soluciones informáticas