2009-11-18 118 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"; 
}