2016-01-12 2 views
1

У меня есть следующий MySQL таблица Test_ResultsMySQl: где сравнивающие значения

| ID | Test_ID | Device_OS| Status | Date  | Device_ID | 
| 1 | 1  | Android | passed | 2015/10 | 1   | 
| 2 | 1  | Android | failed | 2015/10 | 1   | 
| 3 | 15  | iOS  | failed | 2015/11 | 2   | 
| 4 | 20  | Android | passed | 2015/11 | 1   | 
| 5 | 27  | Android | failed | 2015/11 | 1   | 
| 6 | 10  | iOS  | failed | 2015/12 | 2   | 
| 7 | 5  | Android | passed | 2015/12 | 1   | 

нужно выбрать тесты, которые не удалось на устройстве с ID = 1, но прошло на устройстве с ID = 2.

Так что мне нужно сравнить значения на основе Device_ID, можете ли вы направить меня, что искать в Интернете.

+1

И какова ваша проблема? – Jens

+0

Я не знаю, как построить запрос до сих пор, это не чисто предложение «где», я не уверен, как выполнить сравнение. – Michael

+1

Показать ожидаемый результат – Jens

ответ

2

Если вы хотите, и условия, которые должны быть удовлетворены, то попробуйте следующее:

SELECT Test_ID 
FROM Test_Results 
WHERE Test_ID IN (SELECT Test_ID FROM Test_Results WHERE Device_ID = 1 AND Status LIKE 'failed') 
AND Device_ID = 2 AND Status LIKE 'passed'
+0

Спасибо. IN - это именно то, что мне нужно. – Michael

+0

Добро пожаловать :) –

-1

Просто сделать его безопасным способом ....

  SELECT * 
      FROM Test_Results 
      WHERE (`Device_ID` = 1 AND `Status` = 'passed') 
        OR 
        (`Device_ID` = 2 AND `Status` = 'failed'); 

Надежда будет работать отлично ...

+0

Сначала моя команда php. Во-вторых: не используйте mysql_ * API !!! – Jens

0
select Test_ID, COUNT(Test_ID) as TEST_COUNT from Test_Results 
where (Status='failed' AND Device_ID = 1) OR (Status='passed' AND Device_ID = 2) 
group by Test_ID 
Having TEST_COUNT>1 
Смежные вопросы