2012-08-09 27 views
1

我有一個包含比賽名稱和結果的Db。我正在嘗試編寫一個將決定所有特定名稱結果的sql語句。問題在於,取決於比賽發生的地點,在當地還是在路上,結果都在不同的欄目中。例如mysql select語句返回不總是在同一列中的數據。

____________________________________________________________________ 
    | home Runner | Road runner| road Outcome | home Outcome | ID  | 
    -------------------------------------------------------------------- 
    | Jerry | Brian |  323  |  350  | 1  | 
    -------------------------------------------------------------------- 
    | Brian  | Jerry |  259  |  265  | 2  | 

,你可以看到,如果我想拉布萊恩的結果,它變得很困難,因爲他的結果能夠公路和家庭列之間切換。我想我可以存儲一個陣列,其中包含與brians相匹配的所有id,然後以某種方式返回結果,具體取決於brian位於(home,road)列中的結果,到目前爲止,我已經完成了以下操作,但卡住底部完成

$getRunner = "select id from $db where homeRunner = brian union select id from $db where roadRunner = Brian" order by id asc; 
    $result=mysql_query($getRunner); 
    $id=array(); // this is to hold all the Id's that match 
    while($row = mysql_fetch_array($result)){ 
     $id[]=$row['id']; 
    } 
    foreach ($id as $element){ 
     $getOutcome = "select roadOutcome from $db where roadRunner = brian and id =$element"; 
     $result2 = mysql_query($getOutcome); 
     while($row2 = mysql_fetch_array($result2)){ 
      echo $row2['roadOutcome']; 
      echo '<br />'; 
     } 

很多問題在這裏,我知道。如果可能的話,我想整理這些查詢,更不用說讓它工作。我怎麼能說「如果homeRunner =布萊恩然後選擇homeOutcome,否則選擇roadOutcome其中id = $元素」?

最終,我試圖返回數組中的答案,以便我可以繪製它。我正在用PHP寫這篇文章。謝謝你的幫助!

+0

嘗試'case'條款 – 2012-08-09 04:50:18

+0

你能給我的怎麼回事的例子子句會出現在基於上面的問題的PHP內? – 2012-08-09 04:57:04

回答

0
SELECT 
    CASE 
    WHEN HomeRunner = 'Brian' THEN 'Home' 
    ELSE 'Road' 
    END OutcomeType, 
    CASE 
    WHEN HomeRunner = 'Brian' THEN HomeOutcome 
    ELSE RoadOutcome 
    END Outcome 
FROM $db 
WHERE HomeRunner = 'Brian' OR RoadRunner = 'Brian' 
+0

'END OUTcomeType'應該是'END AS OutcomeType' – 2012-08-09 05:09:46

0

您可以在一個查詢中爲實現這一目標:

SELECT IF(homeRunner = 'Brian', homeOutcome, road_Outcum) AS outcum 
FROM table_name 
WHERE (homeRunner = 'Brian' OR roadRunner = 'Brian'); 
0

試試這個:

$getOutcome = "SELECT CASE 'BRIAN' 
       WHEN homeRunner THEN homeOutcome 
       WHEN roadRunner THEN roadOutcome 
       END FROM $db WHERE id =$element"; 
$result2 = mysql_query($getOutcome); 
$outcome = mysql_fetch_row($getOutcome); 
echo $outcome[0]; // Final Output!