2012-08-09 23 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!