我是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-Code编写了所有代码。值应通过表格给出。
答案 0 :(得分:1)
研究存储过程。您可以将用户输入作为参数包含在内,然后通过声明的参数将其传递给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'
答案 1 :(得分:0)
如果您参数化输入" VALUE GIVEN FROM USER"这可能就是你追求的目标。
...
WHERE TableBezahlung.Datum = &UserValue
...
单曲&'将替换该值一次。如果您使用'&&',则会在会话结束时替换该值。