Я пытаюсь произвести это SQL с SLICK 1.0.0:Как писать вложенные запросы в предложении выбора
select
cat.categoryId,
cat.title,
(
select
count(product.productId)
from
products product
right join products_categories productCategory on productCategory.productId = product.productId
right join categories c on c.categoryId = productCategory.categoryId
where
c.leftValue >= cat.leftValue and
c.rightValue <= cat.rightValue
) as productCount
from
categories cat
where
cat.parentCategoryId = 2;
Моя самая успешная попытка (я уронил «присоединяется» часть, так что это более удобным для чтения):
def subQuery(c: CategoriesTable.type) = (for {
p <- ProductsTable
} yield(p.id.count))
for {
c <- CategoriesTable
if (c.parentId === 2)
} yield(c.id, c.title, (subQuery(c).asColumn))
который производит SQL недостающую скобку в подзапрос:
select
x2.categoryId,
x2.title,
select count(x3.productId) from products x3
from
categories x2
where x2.parentCategoryId = 2
, который, очевидно, недействительна SQL Любые мысли о том, как иметь SLICK, помещают эти скобки в нужное место? Или, может быть, есть другой способ добиться этого?
Вы можете разместить рядом с вашими попытками? –
Я отправил то, что у меня до сих пор – wassertim
Это похоже на ошибку/недосмотр в компиляторе запросов ко мне. Может быть, вы должны подать отчет об ошибке. – 2013-02-17 22:37:07