Я не уверен, почему это так. Мне нужно выбрать несколько значений из двух таблиц на основе некоторых критериев, которые должны быть ясны из запроса, который я попробовал ниже.Выберите из двух таблиц, содержащих больше строк, чем ожидалось
query = @"SELECT n.borrower, a.sum, n.lender FROM Notification AS n, Acknowledgment AS a
WHERE [email protected] AND n.id IN (SELECT parent_id FROM Acknowledgment
WHERE [email protected] AND [email protected])";
Это возвращает больше строк (12), чем ожидалось.
У меня есть две таблицы Уведомление и Подтверждение, которые имеют поле «сумма». Когда я пытаюсь выполнить запрос ниже, он дает правильные 3 строки, как ожидалось.
@"SELECT n.borrower, n.sum, n.lender FROM Notification AS n
WHERE [email protected] AND n.id IN (SELECT parent_id FROM Acknowledgment
WHERE [email protected] AND [email protected])";
Теперь мне нужно продлить этот запрос так, что мне нужно a.sum
и не n.sum
. Но когда я пытаюсь выполнить первый запрос, он дает намного больше строк, я имею в виду, что условие WHERE
не работает. Я не знаю, если это причуда с MS Access или что-то не так с запросом. Я ценю альтернативную реализацию в доступе, если мой запрос кажется прекрасным, потому что он просто не работает! :)
Я прочитал here, что различные базы данных реализуют выбор по-разному. Незнайка, если его что-то конкретное с доступом ..
После предложения от Li0liQ, я попытался это:
@"SELECT n.borrower, a.sum, n.lender FROM Notification AS n
INNER JOIN Acknowledgment AS a ON a.parent_id = n.id AND [email protected] AND [email protected]
WHERE [email protected]"
Но теперь я получаю «JOIN выражение не поддерживается» ошибку.
Просто отлично. Что-то близко к тому, о чем я думал! – nawfal
Подзапрос не требуется. Это условие должно быть выполнено! – nawfal
@nawfal, но добиться такого же результата можно, поставив эти условия в предложение WHERE, которое было бы более эффективным, чем вспомогательный запрос. – phoog