Как объединить четыре несвязанные таблицы mysqli?
у меня есть четыре таблицы, которые не связаны друг с другом.
каждый столбец имеет разные имена и данные, кроме столбца payment
таблицы выглядят следующим образом:
Таблица ventas1
id_ventas_so cliente_software producto_software precio_software payment
1 Juan Carlos M Windows 400 pagado
Таблица ventas2
id_producto cliente_pro producto registro_pro precio_pro payment
1 Maria laptop 2018/09 1200 pagado
Таблица ventas3
id_libro cliente_libro libro autor_libro precio_libro payment
1 Pedro Sombras Anónimo 50 pagado
Таблица ventas4
id_suscripcion usuario_premium suscripcion payment
1 Marcos 40 pendiente
из четырех таблиц мне просто нужно отобразить список клиентов со статусом оплаты подтверждено (оплачено).
как я могу получить список следующим образом, объединив несвязанные таблицы в один запрос?
Cliente Producto Autor Registro Precio Estado
Juan Carlos M Windows 400 pagado
Maria laptop 2018/09 1200 pagado
Pedro Sombras Anónimo 50 pagado
я разрабатываю с объектно-ориентированными подготовленными запросами mysqli
while ($stmt->fetch()) {
//Obtener los resultados deseados
}
1 answers
Похоже, вам нужен оператор UNION. То, что это делает, объединяет в один "ответ" результатов выполнение нескольких операторов SQL. "Единственным" важным требованием в вашем примере является то, что они имеют одинаковое количество столбцов, но поскольку вы можете повторно назвать их или создать пустые столбцы по своему вкусу, вы можете использовать такой оператор:
SELECT cliente_software as Cliente, producto_software as Producto, null as Autor,
null as Registro, precio_software as Precio, payment as Estado FROM ventas1 WHERE payment = 'pagado'
UNION
SELECT cliente_pro as Cliente, producto as Producto, null as Autor,
registro_pro as Registro, precio_pro as Precio, payment as Estado FROM ventas2 WHERE payment = 'pagado'
UNION
SELECT cliente_libro as Cliente, libro as Producto, null as Autor,
null as Registro, precio_libro as Precio, payment as Estado FROM ventas3 WHERE payment = 'pagado'
UNION
SELECT usuario_premium as Cliente, null as Producto, null as Autor,
null as Registro, suscripcion as Precio, payment as Estado FROM ventas4 WHERE payment = 'pagado';
Столбцы, которые не соответствуют таблице, вы определяете как null
и заполняете те, которые принадлежите.
Я взял на себя смелость попробовать его в SQLfiddle, который я оставляю вам по этой ссылке.