2015-03-24 2 views
-1

я работаю на упражнение 16 из SQL-EX.comПодбирая пары из SQL Server

Find the pairs of PC models having identical speeds and RAM. 
As a result, each resulting pair is shown only once, i.e. (i, j) but not (j, i). 
Result set: model with higher number, model with lower number, speed, and RAM. 

Я использовал следующий запрос

SELECT B.code, B.model AS BM, A.code, A.model, A.speed, A.ram 
FROM PC A 
JOIN PC B 
ON A.speed = B.speed AND A.ram = B.ram 
WHERE A.model <> B.model 
ORDER BY B.model ASC 

enter image description here

Как я получить только пары, где BM выше, чем model?

+1

Этот сайт, похоже, препятствует публикации упражнений или совместной работы над ними: http://sql-ex.com/register.php – maxwellb

ответ

1

Вместо использования <> используйте <:

SELECT 
    a.model, 
    b.model, 
    a.speed, 
    a.ram 
FROM PC a 
INNER JOIN PC b 
    ON b.speed = a.speed 
    AND b.ram = a.ram 
    AND b.model < a.model 
+1

Ugghhhh ... иногда вам просто нужна еще одна пара глаз, чтобы поймать это. – Dombey

1

Изменить эту строку:

WHERE A.model <> B.model 

Для этого:

WHERE A.model > B.model 

Кроме того, необходимо выбрать правильные столбцы, но получение правды WHERE было трудной частью.

Смежные вопросы