Присоединитесь к таблице цен и выберите запись за последний день:
select pa.partid, pa.Partnumber, max(pr.price)
from myparts pa
inner join myprices pr on pr.partid = pa.partid
where pr.PriceDate = (
select max(PriceDate)
from myprices
where partid = pa.partid
)
Максимальное значение () - в случае, если в день существует несколько цен; Я предполагаю, что вы хотели бы показать самый высокий. Если в вашей таблице цен есть столбец идентификаторов, вы можете избежать max () и упростить, например:
select pa.partid, pa.Partnumber, pr.price
from myparts pa
inner join myprices pr on pr.partid = pa.partid
where pr.priceid = (
select max(priceid)
from myprices
where partid = pa.partid
)
P.S. Вместо этого используйте решение wcm!
Я использую этот метод локализации и добавил параметр маршрута, который устанавливает культуру и язык всякий раз, когда пользователь посещает example.com/xx-xx/[1260ptingExample :
routes.MapRoute("DefaultLocalized",
"{language}-{culture}/{controller}/{action}/{id}",
new
{
controller = "Home",
action = "Index",
id = "",
language = "nl",
culture = "NL"
});
У меня есть фильтр, который выполняет фактическую настройку культуры / языка:
using System.Globalization;
using System.Threading;
using System.Web.Mvc;
public class InternationalizationAttribute : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext) {
string language = (string)filterContext.RouteData.Values["language"] ?? "nl";
string culture = (string)filterContext.RouteData.Values["culture"] ?? "NL";
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
}
}
Чтобы активировать атрибут интернационализации, просто добавьте его в свой класс:
[Internationalization]
public class HomeController : Controller {
...
Теперь, когда посетитель переходит на http: // example .com / de-DE / Home / Index отображается немецкий сайт.
Надеюсь, эти ответы укажут вам в правильном направлении.
Я также сделал небольшой пример проекта MVC 5, который вы можете найти здесь
Просто перейдите по адресу http: // {yourhost}: {port} / en-us / home / index, чтобы увидеть текущую дату на английском языке (США), или измените ее на http: // {yourhost} : {port} / de-de / home / index для немецкого языка и т. д.
Я бы сделал это в событии Initialize контроллера, как это. ..
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
const string culture = "en-US";
CultureInfo ci = CultureInfo.GetCultureInfo(culture);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
Поскольку это параметр, который сохраняется для каждого пользователя, сеанс является подходящим местом для хранения информации.
Я бы изменил ваш контроллер, чтобы он принимал строку культуры в качестве параметра вместо того, чтобы иметь разные методы действий для каждой потенциальной культуры. Добавить ссылку на страницу очень просто, и вам не нужно постоянно писать один и тот же код каждый раз, когда требуется новая культура.
public class CultureController : Controller
{
public ActionResult SetCulture(string culture)
{
HttpContext.Session["culture"] = culture
return RedirectToAction("Index", "Home");
}
}
<li><%= Html.ActionLink("French", "SetCulture", new {controller = "Culture", culture = "fr-FR"})%></li>
<li><%= Html.ActionLink("Spanish", "SetCulture", new {controller = "Culture", culture = "es-ES"})%></li>