假设我有父通道X,它有4个子通道。每个子频道和父频道都有一些视频,首先sql查询返回父节点为X的所有子频道中的视频,第二个查询返回频道为X的视频。现在我想要这两个节目的组合结果。频道X中的视频总数和X
的所有子频道中的视频$sql1="SELECT * FROM vibe_videos where category in (SELECT cat_id FROM vibe_channels where child_of=".$video_cat_id.");";
$sql2 = "SELECT * FROM vibe_videos where category = ".$video_cat_id.";";
答案 0 :(得分:1)
您可以使用or
条件来合并查询
$sql1="SELECT * FROM vibe_videos where
category in (SELECT cat_id FROM vibe_channels where child_of=$video_cat_id)
or category = $video_cat_id";
附注:确保清理$video_cat_id
或更好地使用准备好的语句来保护自己免受注入攻击。
答案 1 :(得分:0)
我认为你期待这一点。
" Select vibe_videos.* from vibe_videos INNER JOIN vibe_channels ON ( vibe_channels.child_of = vibe_videos.category AND vibe_videos.category = ". $video_cat_id .") or vibe_videos.category = ". $video_cat_id;
答案 2 :(得分:0)
"SELECT foo1, foo2, foo3 FROM `vibe_videos` WHERE category = ".$video_cat_id." OR child_of=".$video_cat_id.";
但是你应该使用预准备语句来消除潜在的SQL注入攻击,并避免选择*来支持命名你选择的内容。