我有一个我正在尝试创建的查询,但在查询处于活动状态时页面需要加载...
我想做的是:
我有一个视频网站,当您点击视频时,您将被重定向到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>
当查询在页面上时,加载页面需要永远... 请有人帮我一把。谢谢
答案 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字段是连续的等)。