2009-11-18 80 views
0

我有一台这样的unbale找出正确的SQL查询

Results 
------- 
id  - autoincrement value 
TestCase - varchar 
Verdict - varchar 
AppID  - varchar 

TestCases 
--------- 
id     - autoincrementr value 
TestCase   - varchar 
TestCase_container - varchar 

基本上我在显示PHP代码的结果。在显示测试用例的同时,我将测试用例存储在一个变量中。在mysql_query的while循环中,我正在创建与DB的另一个连接,并将此变量传递给TestCases表以获得TestCase_Container与它的关联。 这是做这个很长的路,但我无法找出适当的直接SQL查询使用连接或任何其他的事情。请有人指出我正确的方向吗?

谢谢,

回答

0

类的说法,但我认为你正在试图做的是什么样的,也许这样的查询?

SELECT b.id AS result_id, a.TestCase, b.Verdict, b.AppID, a.id AS testcase_id, a.TestCase_container 
FROM TestCases a 
LEFT JOIN Results b 
    ON b.TestCase = a.TestCase; 

可能会更好地加入一个索引整数/ ID字段,但这将工作正常。

2

像这样?

select r.id,r.TestCase,r.Verdict,r.AppId,tc.TestCase_container 
from Results r,TestCases tc 
where Results.TestCase=TestCases.TestCase 

对于DB正常化,结果表必须有testcase_id场,而不是TestCase的硬

+0

呃,这个解决方案也是:D – jeffff

0

你可以很容易地通过该SQL查询选择从表中的所有数据:

SELECT Results.TestCase AS TestCase, Results.Verdict AS Verdict, Results.AppID AS AppID, TestCases.TestCase_container AS Container FROM Results JOIN TestCases ON Results.TestCase = TestCases.TestCase 

你应该在任何循环迭代getted值数组后(例如同时)这样的:

$query = "SELECT Results.TestCase, Results.Verdict, Results.AppID, TestCases.TestCase_container FROM Results JOIN TestCases ON Results.TestCase = TestCases.TestCase"; 
$res = mysql_query($query) or die(mysql_error()); 
while ($row=mysql_fetch_array($res)) { 
    echo $row['TestCase'], ":", $row['Verdict'], ":", $row['AppID'], ":", $row['Container'], "\n"; 
}