PHP - CONSULTA ANIDADA

 
Vista:

CONSULTA ANIDADA

Publicado por karolina (10 intervenciones) el 13/11/2019 02:46:11
Hola, amigos, tengo una tabla llamada ventas con: id bigint(20) unsigned NOT NULL auto_increment,
con valores almacenado, hice una consulta anidada para obtener su valor y almacenarlo en otro id_ventas de la tabla productos_vendidos pero no me almacena nada. despues de ejecutar todo el query

en tabla productos vendidos:
id_venta` bigint(20) unsigned NOT NULL default '0',

esta es mi consulta anidada

1
2
3
4
5
6
7
8
9
$insertSQL = sprintf("INSERT INTO productos_vendidos( id_producto,quantity, id_venta)

  SELECT cart_items.product_id, cart_items.quantity, productos_vendidos.id_venta
  FROM cart_items
  LEFT JOIN  productos_vendidos ON cart_items.product_id = productos_vendidos.id_producto
  where productos_vendidos.id_venta =
 (SELECT ventas.id
  FROM ventas
  LEFT JOIN productos_vendidos ON ventas.id= productos_vendidos.id_ventas ORDER BY id DESC LIMIT 1 ) ",
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
Imágen de perfil de Lawliet
Val: 1.031
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA ANIDADA

Publicado por Lawliet (351 intervenciones) el 13/11/2019 04:17:28
Hola!

Por lo que veo tienes error al momento de hacer la relación con el id de tu tabla productos_vendidos... Estás colocando id_ventas cuando debería ser id_venta. Igualmente, podrías colocar el detalle de ambas tablas para ver como están relacionadas.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos!
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

CONSULTA ANIDADA

Publicado por karolina (10 intervenciones) el 13/11/2019 04:39:10
cierto id_venta, pero igual no almacena. Alli dejo las especificaciones:

tabla ventas
1
2
3
4
5
6
7
8
ventas (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `fecha` timestamp NOT NULL default '0000-00-00 00:00:00',
  `total_t` double NOT NULL default '0',
  `CEDULA` int(10) unsigned NOT NULL default '0',
  `NOMBRE_CLIENTE` varchar(30) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

tabla productos_vendidos

1
2
3
4
5
6
7
8
9
productos_vendidos` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `id_producto` bigint(20) unsigned NOT NULL,
  `quantity` bigint(20) unsigned NOT NULL default '0',
  `id_venta` bigint(20) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `Index_2` (`id_venta`),
  CONSTRAINT `FK_productos_vendidos_1` FOREIGN KEY (`id`) REFERENCES `ventas` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
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
Imágen de perfil de Lawliet
Val: 1.031
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA ANIDADA

Publicado por Lawliet (351 intervenciones) el 13/11/2019 04:50:51
Hola!!!

Veo que el constraint donde haces la relación entre tu tabla ventas y productos_vendidos es el incorrecto ya que lo tienes de la siguiente manera...

1
CONSTRAINT `FK_productos_vendidos_1` FOREIGN KEY (`id`) REFERENCES `ventas` (`id`)

Aquí andas relacionando la llave primaria entre ambas tablas lo cual no es la forma de hacer una relación. Si no me equivoco el constraint correcto debería ser de la siguiente manera...

1
CONSTRAINT `FK_productos_vendidos_1` FOREIGN KEY (`id_venta`) REFERENCES `ventas` (`id`)

Esto es debido a que quieres relacionar el campo id_venta de tu tabla productos_vendidos con la llave primaria de tu tabla ventas; es decir, con el id.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos!
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

CONSULTA ANIDADA

Publicado por karolina (10 intervenciones) el 13/11/2019 05:04:02
Gracias Lawliet ---- hice la corrección y no produce resultado, la ejecuto desde mysql query y en efecto no da resultado.


Me llevo el camión jajja
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
Imágen de perfil de Lawliet
Val: 1.031
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA ANIDADA

Publicado por Lawliet (351 intervenciones) el 13/11/2019 05:06:34
Jajaja... Claro, ahí ya depende de los ID para que puedas traer resultados pero la relación ya se encuentra correctamente.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos!
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