У меня есть таблицы вроде этого
Results
-------
id - autoincrement value
TestCase - varchar
Verdict - varchar
AppID - varchar
TestCases
---------
id - autoincrementr value
TestCase - varchar
TestCase_container - varchar
В основном я показываю результаты в php-коде. при отображении тестовой таблицы я храню тестовую таблицу в переменной. в цикле while mysql_query
я создаю другое соединение с БД и передаю эту переменную в таблицу TestCases, чтобы получить TestCase_Container, связанный с ней.
Это длинный способ сделать это, но я не могу найти правильный прямой SQL-запрос, используя соединение или любую другую вещь. Может кто-нибудь указать мне в правильном направлении?
Спасибо,
Трудно сказать, но я думаю, что вы пытаетесь сделать такой запрос, возможно,?
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-поле, но это будет нормально работать.
LIke this?
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
Вы можете легко выбрать все данные из своих таблиц с помощью этого 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";
}