具有变量"Where"的 SQL 查询



我是SQL新手。

我怎么能写一个查询,where条件是依赖于一个语句,它将从用户给出?

我有这个:

SELECT TablePersdaten.Vorname, TablePersdaten.Nachname, TableBezahlung.Datum, TableBezahlung.BelegNr, TableBezahlung.Betrag, Sum(TableBezahlung.Betrag) AS SummevonBetrag
FROM ((TableTeilnehmer INNER JOIN TablePersdaten ON TableTeilnehmer.IDPersdaten = TablePersdaten.IDPersdaten) INNER JOIN TableKurse ON TableTeilnehmer.IDKurs = TableKurse.IDKurs) INNER JOIN TableBezahlung ON TableTeilnehmer.IDTeilnehmer = TableBezahlung.IDStudent
WHERE TableBezahlung.Datum = "VALUE GIVEN FROM USER"
GROUP BY TablePersdaten.Vorname, TablePersdaten.Nachname, TableBezahlung.Datum, TableBezahlung.BelegNr, TableBezahlung.Betrag
ORDER BY TableBezahlung.Datum;

编辑:我正在使用Access 2013,但我正在用sql代码编写一切。这些值应该通过表格给出。

研究存储过程。您可以将用户输入作为参数包含,然后通过声明的参数将其传递给WHERE子句。

所以理想情况下它应该是这样的(注意INT部分它可能必须有一个不同的值对应于table.datum:

CREATE PROCEDURE dbo.Proc1
  @parameter1 INT
AS
BEGIN
SELECT TablePersdaten.Vorname, TablePersdaten.Nachname, TableBezahlung.Datum, TableBezahlung.BelegNr, TableBezahlung.Betrag, Sum(TableBezahlung.Betrag) AS SummevonBetrag
FROM ((TableTeilnehmer INNER JOIN TablePersdaten ON TableTeilnehmer.IDPersdaten = TablePersdaten.IDPersdaten) INNER JOIN TableKurse ON TableTeilnehmer.IDKurs = TableKurse.IDKurs) INNER JOIN TableBezahlung ON TableTeilnehmer.IDTeilnehmer = TableBezahlung.IDStudent
WHERE TableBezahlung.Datum = @parameter1
GROUP BY TablePersdaten.Vorname, TablePersdaten.Nachname, TableBezahlung.Datum, TableBezahlung.BelegNr, TableBezahlung.Betrag
ORDER BY TableBezahlung.Datum;
END

当然在创建后执行这个过程:

EXEC dbo.Proc1 '@parameter1value'

如果你参数化输入"VALUE GIVEN FROM USER",那可能就是你想要的。

...
WHERE TableBezahlung.Datum = &UserValue
...

单个'&'将替换该值一次。如果您使用'&&',它将在会话结束时替换该值。

相关内容

  • 没有找到相关文章

最新更新