2014-01-14 3 views
1

Я изучал это на справедливое время, и я не могу найти решение.Подзапрос, ссылающийся на поле в родительском запросе

В следующем запросе мне нужен вспомогательный запрос к ссылке MachineIdent во внешнем запросе. Поле MachineIdent не является двусмысленным (существует только в таблице CoilPass).

Я думаю, что в настоящее время этот подзапрос возвращает все результаты MachineIdent, где мне нужно только вернуть один (запись в настоящее время извлеченный)

Ошибка возвращаемый «подзапрос возвращает более одной строки»

Правильно ли я полагаю, что оператор SELECT работает вроде как цикл, одновременно получая одну строку информации?

SELECT MachineIdent, 
ROUND(EntryGauge * (SELECT DisplayScaleFactor FROM webreportparametersetup AS w WHERE w.MachineIdent = CoilPass.MachineIdent AND w.ItemName = 'EntryGauge')) AS EntryGauge 
FROM Coil INNER JOIN CoilPass ON Coil.CoilIdent=CoilPass.CoilIdent INNER JOIN PassSection ON CoilPass.PassIdent=PassSection.PassIdent 

ответ

0

Нет, SQL не работает так. Вы можете сузить подзапрос, чтобы вернуть только один результат, но вы действительно хотите просто включить свои новые критерии в существующий запрос, например:

SELECT 
    MachineIdent, 
    EntryGauge, 
    w.DisplayScaleFactor, 
    ROUND(EntryGauge * w.DisplayFactor) AS ScaledEntryGauge 
FROM Coil INNER JOIN CoilPass ON Coil.CoilIdent=CoilPass.CoilIdent 
INNER JOIN PassSection ON CoilPass.PassIdent=PassSection.PassIdent 
INNER JOIN webreportparametersetup w ON w.MachineIdent = CoilPass.MachineIdent 
WHERE w.ItemName = 'EntryGauge' 
Смежные вопросы