вот именно, сначала получаю количество айди актеров и количество общих фильмов по каждому актеру, получаю массив Код (PHP): $arrayRoles = array( array("actor"=>2,"countMovies"=>1), array("actor"=>6,"countMovies"=>2), array("actor"=>8,"countMovies"=>2), array("actor"=>9,"countMovies"=>3), array("actor"=>84,"countMovies"=>1), ); теперь нужно выбрать всю инфу по каждому с актеров, и добавить количество общих фильмов, вод над этим я и запарился!( как это реализовать???
Код (Text): SELECT * FROM таблица_актёров WHERE id = '$id_actor' выберите всю информацию о актёре. Это вы хотели? Добавлено спустя 1 минуту 47 секунд: а, да. Код (Text): $id_actor = $arrayRoles[0][actor];
мне нужно выбрать всю инфу об всех актерах в массиве $arrayRoles одним запросом, я не каждого по отдельно!
Код (PHP): <?php $arrayRoles = array( array("actor"=>2,"countMovies"=>1), array("actor"=>6,"countMovies"=>2), array("actor"=>8,"countMovies"=>2), array("actor"=>9,"countMovies"=>3), array("actor"=>84,"countMovies"=>1), ); $query = "SELECT * FROM таблица_актёров WHERE "; $countArr = count($arrayRoles) - 1; $i = 0; foreach($arrayRoles as $arr) { $query .= "id = ".$arr["actor"]; if ($i >= $countArr) {break;} else {$query .= " OR ";} $i++; } echo $query; ?> Добавлено спустя 16 секунд: здорово, правда?
норм, но я думаю этот вариант будет проще Код (Text): select актеры.*, count(роли.id) as "количество общих фильмов" from роли left join актеры on роли.id_actor = актеры.id where id_movie in( select id_movie from роли where id_actor = $айди_1 ) group by актеры.id только не могу сортировать по количеству общих фильмов( Добавлено спустя 9 минут 41 секунду: вот решил свою задачу, может кому то пригодится Код (PHP): $query = 'SELECT `actors`.*, count(`roles`.`id`) as `count_movies` FROM `roles` LEFT JOIN `actors` ON `roles`.`actor`=`actors`.`id` WHERE `movie` IN( SELECT `movie` FROM `roles` WHERE `actor` = `переменная с айди`) AND `actors`.`id` != `переменная с айди` GROUP BY `actors`.`id` ORDER BY `count_movies` DESC';
Код (Text): SELECT * FROM table_name WHERE some_id IN (4, 1, 2, 5, 3) в скобках собственно перечисляешь IDы, будет тоже самое что и WHERE ... OR WHERE ... OR WHERE ..., а возможно и еще быстрее.
Что сложного я не могу понять 1. ты делаешь запрос - получить все фильмы актера с id=1 2. у тебя есть все id фильмов, ты делаешь запрос к 3-й таблице, выбрать все фильмы - и в итоге получаешь кучу записей с id актеров и id фильмов 3. далее уже средствами РНР все полученные данные перебираешь, подсчитываешь и т.д. или я может что то не так понимаю?
ну а вот так делать не стоит, когда говорили что надо делать за 1 запрос имелось ввиду если он хочет получить допустим все фильмы автора, тогда это надо делать за 1 запрос, как то так. да и на сколько я понимаю это не возможно, т.к. в одном запросе мы получаем данные и на основе этих данных мы готовим второй запрос.