试图找到,如果这两个查询具有重叠从一个表获取两个查询的重叠
下面的PHP/MySQL的代码工作,但它是笨重;两个查询,数据被转换成数组,数组进行比较!
(请注意这是一个功能,因为它返回是否有重叠)
$manager_sql = "SELECT league_id FROM league_members WHERE manager = 1 AND member_active = 1 AND player_id = $mi";
$player_sql = "SELECT league_id FROM league_members WHERE member_active = 1 AND player_id = $pi";
$manager_result = mysql_query($manager_sql) or die(mysql_error());
$manager_leagues = array();
while($sqlrow = mysql_fetch_array($manager_result)) {
extract($sqlrow);
$manager_leagues[] = $league_id;
}
$player_result = mysql_query($player_sql) or die(mysql_error());
$player_leagues = array();
while($sqlrow = mysql_fetch_array($player_result)) {
extract($sqlrow);
$player_leagues[] = $league_id;
}
$result = array_intersect($manager_leagues, $player_leagues);
return count($result) > 0;
这里是在一个去做查询一些尝试:
(SELECT league_id FROM league_members WHERE manager = 1 AND member_active = 2 AND player_id = '$mi')
UNION ALL
(SELECT league_id FROM league_members WHERE member_active = 1 AND player_id = '$pi')
看起来工作,但返回太多行:
SELECT league_id FROM league_members WHERE league_id IN (
SELECT league_id FROM league_members WHERE manager = 1 AND member_active = 1 AND player_id = '$mi'
) AND league_id IN (
SELECT league_id FROM league_members WHERE member_active = 1 AND player_id = '$pi'
)
通过重叠,你的意思是什么? – 2013-02-27 05:59:08
如果你只是在第一个查询中检查'$ pi',它会是同样的事情。 – kennypu 2013-02-27 06:02:03
A $ mi管理着一堆联赛(例如2,4,6),$ pi在一堆联赛中打球(例如1,3,7) - 重叠比较2,4,6和1,3, 7 – sq2 2013-02-27 06:06:27