我有这样的表
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 :(得分: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";
}