2015-10-06 103 views
0

我试图获取“MenuItem.MenuID”的最后一个ID,因为它是该类型的最新版本,在说有多个Menu。每个市场的名称。如何使用该菜单中的所有项目获得每个菜单每个菜单的最新ID?SQL Query根据另一个字段的值返回最后一个ID

SELECT 
    MenuItem.MenuId, Menu.Name, MenuItem.ProductId, Product.Name, 
    MenuItem.Count,Menu.MenuTypeId, MenuType.MarketId, Available, 
    StandardItem, UnitsPerPackage, ItemWeighting, Product.Disabled, ExtraItem 
FROM MenuItem 
JOIN Menu 
    ON MenuItem.MenuId = Menu.Id 
JOIN ProducT 
    ON MenuItem.ProductId = Product.Id 
JOIN MenuType 
    ON MenuType.Id = MENU.MenuTypeId 
WHERE MenuType.Disabled = 0 
    AND product.Disabled = 0 
    AND MENU.NAME = 'a generic menu' 
    AND MenuType.MarketId = 1 
ORDER BY 
    MarketId, 
    MENU.ID, 
    MenuTypeId; 
+0

什么数据库您使用比如说SQL Server或Oracle或MySQL? – Roger

+0

SQL Server 2005 – user3618691

回答

0
SELECT TOP 1 
    MenuItem.MenuId, Menu.Name, MenuItem.ProductId, Product.Name, 
    MenuItem.Count,Menu.MenuTypeId, MenuType.MarketId, Available, 
    StandardItem, UnitsPerPackage, ItemWeighting, Product.Disabled, ExtraItem 
FROM 
    MenuItem 
    INNER JOIN Menu ON MenuItem.MenuId = Menu.Id 
    INNER JOIN ProducT ON MenuItem.ProductId = Product.Id 
    INNER JOIN MenuType ON MenuType.Id = MENU.MenuTypeId 
WHERE 
    MenuType.Disabled=0 AND product.Disabled=0 
    AND MENU.NAME = 'a generic menu' AND MenuType.MarketId=1 
ORDER BY 
    MarketId, MENU.ID, MenuTypeId 

UPDATE:

,如果你想返回顶部为每个市场你可能使用公共表表达式是这样的:

WITH MyMenus AS 
(
    SELECT *, 
     ROW_NUMBER() OVER (PARTITION BY MenuType.MarketId ORDER BY Menu.Id, Menu.MenuTypeId) AS rowNumber 
    FROM MenuItem 
    INNER JOIN Menu ON MenuItem.MenuId = Menu.Id 
    INNER JOIN Product ON MenuItem.ProductId = Product.Id 
    INNER JOIN MenuType ON MenuType.Id = Menu.MenuTypeId 
    WHERE 
    MenuType.Disabled=0 AND product.Disabled=0 
    AND Menu.Name = 'a generic menu' 
) 
SELECT * 
FROM MyMenus 
WHERE rowNumber = 1 
+0

它只返回顶部ID,所以最后一个菜单,但每10个市场有10个菜单,每个菜单内部有8-10个项目,这仅返回第一个项目。我需要它为该菜单返回多个菜单(并且仅返回最后一个菜单ID)。谢谢 – user3618691

+0

我需要它为每个市场的每个菜单返回一个最高值。谢谢 – user3618691

+0

您可以生成并上传架构的SQL脚本和一些示例数据,以便我可以复制确切的问题并尝试解决它? – Roger

相关问题