无法弄清楚正确的SQL查询

时间:2009-11-18 11:18:31

标签: php sql mysql

我有这样的表

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查询。有人能指出我正确的方向吗?

谢谢,

3 个答案:

答案 0 :(得分:2)

喜欢这个?

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

对于数据库规范化,结果表必须包含testcase_id字段而不是TestCase

答案 1 :(得分: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 :(得分: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

在你应该在任何循环(例如while)中迭代获取值的数组之后:

$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";
}