Как написать запрос для подсчета количества конкретных записей в другой таблице без внешнего ключа?

Ниже приведена схема моего БД ER-диаграмма,Я хочу получить все результаты из таблицы Subscription для данного Subscription.ClientId с номером Assigned.ScreenId для каждого Subscription.RouteId для этого Subscription.ClientId. Я попробовал код ниже, я также пытался наладить отношения, но безуспешно, Как я могу это сделать в yii.

SELECT S. * , (

SELECT COUNT( C.ScreenId ) 
FROM (

SELECT B.ScreenId, A.RouteId, B.clientId
FROM Screens AS A
INNER JOIN Assigned AS B ON A.ScreenId = B.ScreenId
) AS C
WHERE S.RouteId = C.RouteId
) AS couNTER
FROM Subscription AS S
LIMIT 0 , 30

Вот ссылка на образец http://sqlfiddle.com/ [примечание: я удалил таблицу подписанных экранов]

Что я хочу в качестве вывода

RouteId ClientId NumScreen NumAds... (Count(assignedScreenid)for given route)
1        1                              2
2        1                              1
1        2                              1
2        2                              3

1 ответ

Пройдите нижеприведенный sql, и если результат не тот, к которому вы стремитесь, возможно, уточните результаты, которые вы ожидали.

-- SELECT subscription.SubscriptionId, client.clientId, assigned.ScreenId, route.RouteId
SELECT route.RouteId, client.clientId, COUNT(assigned.ScreenId)
FROM subscription
  LEFT JOIN client ON client.ClientId = subscription.ClientId
  LEFT JOIN assigned ON assigned.ClientId = client.ClientId
  LEFT JOIN route ON route.RouteId = subscription.RouteId
GROUP BY assigned.ScreenId

Результаты:

ROUTEID   CLIENTID   COUNT(ASSIGNED.SCREENID)
   2         1         4
   2         1         2
   2         1         6
   1         2         2
Другие вопросы по тегам