我是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
...
单个'&'将替换该值一次。如果您使用'&&',它将在会话结束时替换该值。