Venu Gopal Mulavana Kayamkulam Ответов: 2

В запросе SELECT соберите данные из таблицы a и условие должно быть основано на таблице a и таблице B


У меня есть две таблицы, названные partpayment и залогодатель Мне нужно собрать данные из partpayment только, и условие в
Where
предложение должно быть применимо к обеим таблицам.

Мне нужен запрос что-то вроде того, что я упомянул ниже. (Я знаю, что запрос неверен. Но мне нужен результат, как он есть.)

Здесь, в
Where
пункт ДАТА должен быть фильтр из таблицы partpayment и
redeemed = 0
должно быть со стола залогодатель

И снова я говорю, что приведенный ниже запрос неверен. Мне нужен результат примерно такой. вот и все.

Что я уже пробовал:

DataFilterQuery = "Select partpayment.pledgedate As PDATE, " & _
      "partpayment.pledgeno As REFNO, partpayment.pawnername As PAWNER, " & _
      "partpayment.loanamount as AMOUNT, partpayment.totalweight As WEIGHT " & _
      "From partpayment Where partpayment.ppdate >= @FromDate And partpayment.ppdate <= @ToDate " & _
      "And pledger.redeemed = 0 Order By partpayment.pledgedate, partpayment.pledgeno"

2 Ответов

Рейтинг:
13

OriginalGriff

Вероятно, вам нужно использовать соединение: SQL-соединения[^]
Если у вас есть две таблицы авторов:

ID Name
1  Terry Pratchett
2  David Eddings

И Книги:
ID AuthorId Name
1  1        Night Watch
2  1        Thief of Time
3  2        Demon Lord of Karanda

И вы хотите вернуть автора и книги:
SELECT a.ID, 
       a.[Name] AS Author, 
       b.[Name] AS Title 
FROM Authors a 
JOIN Books b 
ON a.ID=b.AuthorID

Тогда вы получите:
ID      Author             Title
1       Terry Pratchett    Night Watch
1       Terry Pratchett    Thief of Time
2       David Eddings      Demon Lord of Karanda
В вашем описании не очень ясно, чего именно вы пытаетесь достичь, но это должно помочь вам разобраться в этом.
Вы можете использовать предложение WHERE, которое включает обе таблицы.
... WHERE a.Name LIKE 'Terry%' AND b.Name LIKE '%Time'


Venu Gopal Mulavana Kayamkulam

Оба ответа 2 работают отлично.. Спасибо...

OriginalGriff

Всегда пожалуйста!

Рейтинг:
1

Maciej Los

Прежде всего, пожалуйста, прочтите это: Визуальное представление SQL-соединений[^]

Тогда попробуйте вот это:

SELECT pp.pledgedate As PDATE, pp.pledgeno As REFNO, pp.pawnername As PAWNER, pp.loanamount as AMOUNT, pp.totalweight As WEIGHT
FROM partpayment pp
    INNER JOIN pledger p ON pp.[Key] = p.[Key] And pledger.redeemed = 0 --read note below the query
WHERE pp.ppdate >= @FromDate And pp.ppdate <= @ToDate
Order By pp.pledgedate, pp.pledgeno;

Примечание:
Заменять [Key] с правильным именем поля, которое определяет связь между таблицами!

Примечание № 1: MS Access database engine любит скобки ()!
Цитата:
Если необходимо объединить несколько таблиц, можно вложить внутренние предложения JOIN. Следующий пример основан на предыдущем операторе SELECT для создания результирующего набора, но также включает город и штат каждого клиента, добавляя внутреннее соединение для таблицы tblShipping.
язык SQL

SELECT [Last Name], InvoiceDate, Amount, City, State 
FROM (tblCustomers AS cus
    INNER JOIN tblInvoices AS inv ON cus.CustomerID=inv.CustomerID) 
      INNER JOIN tblShipping AS shi ON cus.CustomerID=shi.CustomerID 
   ORDER BY InvoiceDate

Видеть: Выполнение соединений с помощью Access SQL | Microsoft Docs[^]


Примечание № 2: Использование международных форматов даты!
Видеть: Использование международных форматов дат в операторах SQL | Microsoft Docs[^]


Venu Gopal Mulavana Kayamkulam

"И залогодатель.погашен = 0"
показывает "синтаксическую ошибку в операции соединения." когда я удаляю это, ошибки нет.
Полный запрос приведен ниже, я уже пробовал.

DataFilterQuery = "выберите pp.pledgedate как PDATE, pp.pledgeno как REFNO", & _
"РР.pawnername как залогодатель, ПП.объемкредита как сумма, ПП.общим весом в качестве веса " и усилитель; _
"От partpayment ПП внутреннее соединение залогодателя П" О &амп; _
"pp.pledgeno = p.pledgeno и pledger.redeemed=0" & _
"Где pp.ppdate >= @Me.dtpAccountFrom.Value.Дата и " и усилитель; _
"РР.ppdate &ЛТ;= @я.dtpAccountTo.Значение.Дата заказа по pp.pledgedate, pp.pledgeno"

Venu Gopal Mulavana Kayamkulam

Я поместил это "и залогодатель.погашен = 0" в предложение Where...
Спасибо... (Y)

Maciej Los

Заменить "залогодатель" на "Р". Я использую псевдонимы для имен таблиц.