2016-02-10 3 views
0

У меня есть две таблицы, как это: enter image description hereSQL внутреннее объединение двух таблиц с 2 матча на правом

Я хочу, чтобы выбрать In и Out значения из деталей журнала, где id=1 в журнале таблицы. Я попытался это для In значения:

SELECT Log.Time, LogDetail.Value 
FROM Log where ID=1 
INNER JOIN LogDetail 
ON Log.ID=LogDetail.ID where Name="In"; 

Это истинный запрос?

+0

Какой РСУБД это? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –

ответ

1

Если вы попытаетесь запустить этот запрос, вы увидите, что он не может быть выполнен. Причина состоит в двух содержащихся в нем where заявлениях.

Запрос может содержать только один оператор where в большинстве СУБД (в то время как этот оператор может содержать несколько условий, объединенных логическими операторами).

Также лучше использовать псевдонимы таблиц - это делает запрос более читаемым и предотвращает возможные двусмысленности.

Таким образом, ваш запрос должен выглядеть следующим образом:

select L.Time, LD.Value 
from Log as L 
    inner join LogDetail as LD on L.ID=LD.ID 
where L.ID=1 and LD.Name="In" 
Смежные вопросы