2014-12-20 22 views
1

我有這兩個表...試圖限制回來在MySQL查詢/數據陣列

時間表(遊戲ID,homeid,awayid,weekno,seasonno)

隊(teamid,位置,暱稱)

下面這個MySQL查詢獲取我安排信息對所有32支球隊......

 $sql = "SELECT 
     h.nickname AS home, 
     a.nickname AS away, 
     h.teamid AS homeid, 
     a.teamid AS awayid, 
     s.weekno 
    FROM schedule s 
     INNER JOIN teams h ON s.homeid = h.teamid 
     LEFT JOIN teams a ON s.awayid = a.teamid 
    WHERE s.seasonno =2014"; 
$schedule= mysqli_query($connection, $sql); 
if (!$schedule) { 
die("Database query failed: " . mysqli_error($connection)); 
} else { 
// Placeholder for data 
    $data = array(); 
    while($row = mysqli_fetch_assoc($schedule)) { 
     if ($row['away'] == "") {$row['away']="BYE";} 
     $data[$row['homeid']][$row['weekno']] = $row['away']; 
     $data[$row['awayid']][$row['weekno']] = '@ '.$row['home']; 
    } 
} 

不過,我只想得到一個特定的團隊,這是存儲在$ teamid變量信息。這應該很容易,對吧?我曾嘗試多種因素,包括下面這一個(這裏我添加了一個AND語句),但是這一次還是輸出太多...

$sql = "SELECT 
    h.nickname AS home, 
    a.nickname AS away, 
    h.teamid AS homeid, 
    a.teamid AS awayid, 
    s.weekno 
FROM schedule s 
    INNER JOIN teams h ON s.homeid = h.teamid 
    LEFT JOIN teams a ON s.awayid = a.teamid 
WHERE s.seasonno =2014 
AND h.teamid=$teamid OR a.teamid=$teamid"; 
$schedule= mysqli_query($connection, $sql); 
if (!$schedule) { 
die("Database query failed: " . mysqli_error($connection)); 
} else { 
// Placeholder for data 
    $data = array(); 
    while($row = mysqli_fetch_assoc($schedule)) { 
     if ($row['away'] == "") {$row['away']="BYE";} 
     $data[$row['homeid']][$row['weekno']] = $row['away']; 
     $data[$row['awayid']][$row['weekno']] = '@ '.$row['home']; 
    } 
} 

下面是數組,上面的輸出。這是更好,但我想要的是第2個數組([1]),其中有,在這個例子中,老鷹完整的時間表。它沒有給我太多其他東西,我想我可以接受它,只是忽略了其他的東西,但我寧願儘可能高效,只得到什麼,我需要......

Array 
(
    [24] => Array 
     (
      [1] => Eagles 
     ) 

    [1] => Array 
     (
      [1] => Jaguars 
      [3] => Redskins 
      [5] => Rams 
      [9] => @ Texans 
      [11] => @ Packers 
      [13] => @ Cowboys 
      [14] => Seahawks 
      [17] => @ Giants 
      [4] => @ 49ers 
      [6] => Giants 
      [10] => Panthers 
      [15] => Cowboys 
      [2] => @ Colts 
      [7] => BYE 
      [8] => @ Cardinals 
      [12] => Titans 
      [16] => @ Redskins 
     ) 

    [16] => Array 
     (
      [3] => Eagles 
      [8] => Eagles 
     ) 

    [23] => Array 
     (
      [5] => Eagles 
     ) 

    [10] => Array 
     (
      [9] => Eagles 
     ) 

    [4] => Array 
     (
      [11] => Eagles 
      [1] => Eagles 
      [3] => @ Eagles 
      [16] => Eagles 
     ) 

    [2] => Array 
     (
      [13] => Eagles 
      [17] => Eagles 
      [15] => @ Eagles 
     ) 

    [9] => Array 
     (
      [14] => Eagles 
      [6] => Eagles 
     ) 

    [3] => Array 
     (
      [17] => Eagles 
      [5] => Eagles 
      [6] => @ Eagles 
     ) 

    [29] => Array 
     (
      [4] => Eagles 
     ) 

    [31] => Array 
     (
      [9] => Eagles 
     ) 

    [7] => Array 
     (
      [10] => Eagles 
      [11] => Eagles 
     ) 

    [6] => Array 
     (
      [15] => Eagles 
     ) 

    [27] => Array 
     (
      [1] => @ Eagles 
     ) 

    [28] => Array 
     (
      [2] => Eagles 
     ) 

    [14] => Array 
     (
      [4] => Eagles 
     ) 

    [15] => Array 
     (
      [5] => @ Eagles 
     ) 

    [] => Array 
     (
      [7] => @ Eagles 
     ) 

    [25] => Array 
     (
      [9] => Eagles 
     ) 

    [11] => Array 
     (
      [10] => @ Eagles 
     ) 

    [26] => Array 
     (
      [12] => @ Eagles 
     ) 

    [13] => Array 
     (
      [14] => @ Eagles 
     ) 

) 

更新:我加了括號每Abhik(謝謝!),它幫助了一點,但還是給得太多,即..

Array 
(
    [1] => Array 
     (
      [1] => Jaguars 
      [2] => @ Colts 
      [3] => Redskins 
      [4] => @ 49ers 
      [5] => Rams 
      [6] => Giants 
      [7] => BYE 
      [8] => @ Cardinals 
      [9] => @ Texans 
      [10] => Panthers 
      [11] => @ Packers 
      [12] => Titans 
      [13] => @ Cowboys 
      [14] => Seahawks 
      [15] => Cowboys 
      [16] => @ Redskins 
      [17] => @ Giants 
     ) 

    [27] => Array 
     (
      [1] => @ Eagles 
     ) 

    [28] => Array 
     (
      [2] => Eagles 
     ) 

    [4] => Array 
     (
      [3] => @ Eagles 
      [16] => Eagles 
     ) 

    [14] => Array 
     (
      [4] => Eagles 
     ) 

    [15] => Array 
     (
      [5] => @ Eagles 
     ) 

    [3] => Array 
     (
      [6] => @ Eagles 
      [17] => Eagles 
     ) 

    [] => Array 
     (
      [7] => @ Eagles 
     ) 

    [16] => Array 
     (
      [8] => Eagles 
     ) 

    [25] => Array 
     (
      [9] => Eagles 
     ) 

    [11] => Array 
     (
      [10] => @ Eagles 
     ) 

    [7] => Array 
     (
      [11] => Eagles 
     ) 

    [26] => Array 
     (
      [12] => @ Eagles 
     ) 

    [2] => Array 
     (
      [13] => Eagles 
      [15] => @ Eagles 
     ) 

    [13] => Array 
     (
      [14] => @ Eagles 
     ) 

) 

回答

0

您需要使用括號分離的條件

WHERE s.seasonno =2014 
AND h.teamid=$teamid OR a.teamid=$teamid 

WHERE 
s.seasonno =2014 
AND 
(h.teamid=$teamid OR a.teamid=$teamid) 
0

OR的是放緩的查詢,你可以使用:

... WHERE s.seasonno =2014 AND $teamid IN (h.teamid, a.teamid) 

... WHERE s.seasonno=2014 AND $teamid IN (s.homeid, s.awayid)