在SQL上组合3个查询

时间:2014-10-07 07:40:37

标签: mysql sql

我有一个包含产品和服务的表格。我将产品品牌产品名称服务名称存储在不同的表格中。

我使用此查询获取服务列表:

SELECT maeinvs.idInv, CONCAT(services.Service, " ", maeinvs.Detail) AS Name
FROM maeinvs
INNER JOIN services
ON services.idService = maeinvs.idService

带有这一个的产品清单:

SELECT maeinvs.idInv, CONCAT(brands.Brand, " ", products.Product, " ", maeinvs.Detail) AS Name
FROM maeinvs
INNER JOIN products
ON products.idProduct = maeinvs.idProduct
INNER JOIN brands
ON brands.idBrand = maeinvs.idBrand

我需要得到这样的查询,但是我需要产品或服务的实际名称,而不是 idInv 字段。有什么想法吗?

SELECT idInv, Desc, Qnty, Price
FROM invoicedetails
WHERE idInvoice = $id

感谢。

2 个答案:

答案 0 :(得分:0)

SELECT maeinvs.idInv, CONCAT(services.Service, " ", maeinvs.Detail) AS Name,
"" AS Desc, 0 AS Qnty, 0 AS Price
FROM maeinvs
INNER JOIN services
ON services.idService = maeinvs.idService
UNION
SELECT maeinvs.idInv, CONCAT(brands.Brand, " ", products.Product, " ", maeinvs.Detail) AS Name,
"" AS Desc, 0 AS Qnty, 0 AS Price
FROM maeinvs
INNER JOIN products
ON products.idProduct = maeinvs.idProduct
INNER JOIN brands
ON brands.idBrand = maeinvs.idBrand
UNION
SELECT idInv, 
"" AS Name,
Desc, Qnty, Price
FROM invoicedetails
WHERE idInvoice = $id

我已经写下了我在下一行所做的改变了 由于列彼此匹配,UNION将起作用。

答案 1 :(得分:0)

我仍然不知道如何在单个查询中执行此操作(我只知道基础知识; Alias?)但解决了它执行 VIEW 然后加入使用我的 invoicedetails 表。

查看:

SELECT maeinvs.idInv, CONCAT(services.Service, " ", maeinvs.Detail) AS Name
FROM maeinvs
INNER JOIN services
ON services.idService = maeinvs.idService
UNION
SELECT maeinvs.idInv, CONCAT(brands.Brand, " ", products.Product, " ", maeinvs.Detail) AS Name
FROM maeinvs
INNER JOIN products
ON products.idProduct = maeinvs.idProduct
INNER JOIN brands
ON brands.idBrand = maeinvs.idBrand

QUERY:

SELECT viewnames.Name, invoicedetails.Desc, invoicedetails.Qnty, invoicedetails.Price
FROM invoicedetails
INNER JOIN viewnames ON viewnames.idInv = invoicedetails.idInv
WHERE invoicedetails = $id