数据库查询需要永远加载

时间:2014-05-23 12:17:17

标签: mysql sql database joomla joomla3.0

我有一个我正在尝试创建的查询,但在查询处于活动状态时页面需要加载...

我想做的是:

我有一个视频网站,当您点击视频时,您将被重定向到VIDEO页面,在那里您可以看到视频,网址结构如下:

www.site.com/VIDEO_CATEGORY_NAME/VIDEO_ID.html

video_category和video_id位于不同的表格中。

我想要实现的目标是:建立一个链接,以便用户点击它时会被重定向到RANDOM视频页面(随机视频)。

以下是我试图写的查询:

$db = JFactory::getDBO();
$query = "SELECT distinct a.*,b.category FROM #__hdflv_upload a LEFT JOIN #__hdflv_category b on a.playlistid=b.id or a.playlistid=b.parent_id WHERE a.published='1' and b.published='1' and b.id=" . $videocategory1 . " and a.id != " .$videoid1 ." order by rand()";
$db->setQuery($query);
$result = $db->loadResult();

和链接:

<a href="/player/<?php echo $result; ?>.html">random video</a>

当查询在页面上时,加载页面需要永远... 请有人帮我一把。谢谢

1 个答案:

答案 0 :(得分:3)

要避免连接的ON子句中的OR,请尝试使用UNION。

SELECT a.*, b.category 
FROM #__hdflv_upload a 
INNER JOIN #__hdflv_category b 
ON a.playlistid=b.id 
WHERE a.published='1' AND b.published='1' 
AND b.id=" . $videocategory1 . " 
AND a.id != " .$videoid1 ."  
UNION
SELECT a.*, b.category 
FROM #__hdflv_upload a 
INNER JOIN #__hdflv_category b 
ON a.playlistid=b.parent_id 
WHERE a.published='1' AND b.published='1' 
AND b.id=" . $videocategory1 . " 
AND a.id != " .$videoid1 ." 
ORDER BY RAND()

UNION还会删除重复记录,因此呈现DISTINCT无关紧要。

请注意,ORDER BY RAND()可能效率很低。有更有效的解决方案,但就此提出建议需要了解更多有关您的数据(例如,表声明,如果id字段是连续的等)。