2015-01-02 2 views
1

честно, я не знаю, что именно ставить в названии, но здесь идет проблема:Sql Count (*) количество сопутствующих товаров на идентификатор в одном запросе

У меня есть таблица (movie_actor) со ссылкой на актеры и фильмы, с которыми они связаны. Что-то вроде:

AID | MID 
AC01 | MV1 
AC02 | MV1 
AC01 | MV2 
AC02 | MV3 
AC01 | MV3 

Так я придумал, как получить, например, все фильмы, относящиеся к MV1 через своих актеров через этот SQL-запрос:

SELECT movie_actor.MID 
FROM movie_actor 
WHERE AID 
IN (SELECT AID FROM movie_actor WHERE IN MID = "MV1") AND movie_actor.MID<>"MV1" 

, что приведет к:

MID: MV2, MV3 

Теперь, что я действительно хочу получить, это связанные фильмы с MV1 и их соответствующим количеством связанных фильмов. В принципе:

MID | Number of Related Movies 
MV2 | 2 (MV1, MV3) 
MV3 | 2 (MV1, MV2) 

Теперь я могу получить это используя счетчик (*) и запрос, о котором я упоминал ранее.

SELECT COUNT(*) 
FROM movie_actor 
WHERE AID 
IN (
SELECT AID 
FROM movie_actor 
WHERE MID="MV2") 

Но я должен сделать это по отдельности, которые я могу уйти с PHP (пробовал, медленно с большим количеством данных). Можно ли сделать это в одном запросе?

также, если я могу это сделать, будет ли он быстрее, чем противостоять его выполнению в php?

извините, если у меня есть странное форматирование, новое здесь :) также помиловать noobness

ответ

0
SELECT movie_actor.MID FROM movie_actor WHERE AID IN (SELECT AID FROM movie_actor WHERE IN MID = "MV1") group by MID