这是我的第一篇文章。我知道这是非常低效的重复性代码,实际上并不能正常工作,我需要做的就是将所有这些输出合并到一个select语句中。我显然是相当新的,但我一整天都在这里,我无法开始正确的方向,每个片段都可以独立运作......请大家帮忙!mySQL,需要帮助将多个子查询变为1个SELECT查询(显示13列)
本质上,我正在与一个有很多表的数据库一起工作,为了获得每列的正确数据,我经常必须考虑3个连接表。
感谢您的任何见解或帮助!
SELECT
Product.ProductID,
(
SELECT Abbreviation AS Country
FROM Product
LEFT JOIN ProductCountry
ON Product.ProductID = ProductCountry.ProductID
LEFT JOIN Location
ON ProductCountry.LocationID = Location.LocationID
GROUP BY Product.ProductID
),
(
SELECT r.ResourceName AS Manufacturer, rr.ResourceName AS Brand
FROM Product p
LEFT JOIN Resource r
ON p.ManufactureCode = r.ResourceID
INNER JOIN Resource rr
ON p.BrandCode = rr.ResourceID
),
Product.Name,
Product.UPC,
Product.Size,
(
SELECT Unit.abbreviation AS Measure
FROM Product
LEFT JOIN Unit
ON Product.Unit = Unit.UnitID
),
(
SELECT Category.ParentID AS Category, Category.Description AS Sub_Category
FROM Product
LEFT JOIN ProductCategory
ON Product.ProductID = ProductCategory.ProductID
LEFT JOIN Category
ON ProductCategory.CategoryID = Category.CategoryID
),
(
SELECT i.Description AS INGREDIENTS, i.MayContain AS Allergen_Statement
FROM Product
LEFT JOIN Ingredient i
ON Product.ProductID = i.IngredientID
),
(
SELECT GROUP_CONCAT(Special.Description SEPARATOR ', ') AS Free_From
FROM Product
LEFT JOIN ProductSpecial
ON Product.ProductID = ProductSpecial.ProductID
LEFT JOIN Special
ON ProductSpecial.SpecialID = Special.SpecialID
GROUP BY Product.ProductID
)
FROM Product, ProductStatus
WHERE ProductStatus.ProductStatusID = 1
一些子查询使用mysql功夫(魔术组),不能很容易地带出来。我认为你应该从头开始。拍摄输出快照并继续处理新版本,直到其输出结果相同。 – Bohemian 2013-04-20 04:20:32
@Bohemian如果最终目标是将这13列导出为excel,那么我最好使用php来操纵输出吗? – user2301252 2013-04-20 04:29:10
我会避免引入另一层。获取正确的查询。另外,如果查询有效,并且只输出为excel,那么为什么您关心性能? – Bohemian 2013-04-20 05:53:53