разблокировать, чтобы выяснить правильный запрос SQL - PullRequest
0 голосов
/ 18 ноября 2009

У меня есть такие таблицы

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-запрос, используя соединение или что-то еще. Может кто-нибудь указать мне правильное направление, пожалуйста?

Спасибо

Ответы [ 3 ]

2 голосов
/ 18 ноября 2009

Как это?

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

0 голосов
/ 18 ноября 2009

Вы можете легко выбрать все данные из ваших таблиц с помощью этого 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

После того, как вы должны выполнить итерацию массива значений в любом цикле (например, в то время как), как это:

$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";
} 
0 голосов
/ 18 ноября 2009

Трудно сказать, но я думаю, что вы пытаетесь сделать такой запрос, может быть?

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;

Возможно, было бы лучше присоединиться к индексированному полю целочисленного значения / идентификатору, но это бы хорошо работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...