試圖找到,如果這兩個查詢具有重疊從一個表獲取兩個查詢的重疊
下面的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