Intereting Posts
Как установить пару условных ключей => значение в Yii Widget? htaccess включает флаговые флаги, если определенный IP-адрес Длина соли в CRYPT_BLOWFISH Свойство "tablename.title" не определено Сообщение WordPress XML-RPC для определенной категории Файл-получить-содержимое не удалось открыть поток Неавторизованный Запуск mySQL-запроса в качестве задания cron? Как отображать / запрашивать объект JSON с помощью Android Volley? Почему PHPinfo имеет версию заголовка и версию библиотеки? Каковы различия? Невозможно сбросить запрос, чтобы показать сообщение ramdom после первого цикла WordPress REGEX – PHP Получить только полужирный раздел в строке Php & Sql Injection – UTF8 POC Проблема с Gearman: GEARMAN_COULD_NOT_CONNECT родители, дети, рекурсивный список и структура метода Как я могу использовать различные XML-библиотеки PHP для получения DOM-подобных функций и предотвращения уязвимостей DoS, таких как Billion Laughs или Quadratic Blowup?

PHP MySQL Query, чтобы получить наибольшую популярность из двух разных таблиц

У меня есть две таблицы afrostarprofiles и afrostarvvideos, созданные, как показано ниже. Поле artistid в afrostarvideos является основным идентификатором afrostarprofiles. Я хочу один запрос, который вернет мне самый популярный afrostarprofile на основе суммы просмотров (afrostarvideo) и просмотров afrostarprofiles. Мне в основном нужен алгоритм или запрос, который будет оценивать afrostarprofiles на основе общих просмотров видео из afrostarvideos и просмотров из afrostarprofiles. Это возможно. Я знаю, что могу сделать это с помощью PHP-обработки sql-результатов, но я думаю, что есть более эффективный способ с mysql. любая помощь приветствуется

$ct_members="CREATE TABLE `afrostarprofiles` (". "`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,". "`name` TEXT NOT NULL ,". "`country` TEXT NOT NULL ,". "`piclocation` TEXT NOT NULL ,". "`views` INT NOT NULL ,". "`date` INT NOT NULL );"; mysql_query($ct_members); $ct_members="CREATE TABLE `afrostarvideos` (". "`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,". "`name` TEXT NOT NULL ,". "`url` TEXT NOT NULL ,". "`views` INT NOT NULL ,". "`artistid` INT NOT NULL ,". "`date` INT NOT NULL );"; mysql_query($ct_members); 

пример таблицы структуры afrostarprofiles

 4 Jose Chameleon Uganda afrostarpics/4.jpg 10 1287082754 3 Ziggy Dee Uganda afrostarpics/3.jpg 44 1286494407 

примеры профиля afrostarvideo

 12 Tebamatila www 11 3 1287136275 13 Mamba Mtu www 14 3 1287136524 14 TECHNOLOGY www 15 4 1287170779 125 Jamila www 14 4 1287387760 

Я думаю, вам нужно что-то вроде

 SELECT `p`.*, SUM(`v`.`views`)+`p`.`views` AS `totalViews` FROM `afrostarprofiles` `p` LEFT OUTER JOIN `afrostarvideos` `v` ON `p`.`id` = `v`.`artistid` GROUP BY `p`.`id` ORDER BY SUM(`v`.`views`)+`p`.`views` DESC 

Использование:

  SELECT t.* FROM AFROSTARPROFILES t JOIN (SELECT p.id, SUM(p.views) + COALESCE(SUM(v.views), 0) AS total_views FROM AFROSTARPROFILES p LEFT JOIN AFROSTARVIDEOS v ON v.artistid = p.id GROUP BY p.id) x ON x.id = t.id ORDER BY x.total_views DESC