MySQL如何在同一SELECT语句中将存储函数的结果用作参数
所以我的问题是,如何在同一SELECT语句中使用MySQL如何在同一SELECT语句中将存储函数的结果用作参数,mysql,sql,subquery,inner-join,sql-function,Mysql,Sql,Subquery,Inner Join,Sql Function,所以我的问题是,如何在同一SELECT语句中使用berekenKosten()的结果作为nogTeBetalen()的参数?这是我的密码: SELECT boeking.Boekingnr, Naam, Telefoonnr, boeking.Aantal_volwassenen, reis.Prijs_per_persoon, boeking.Betaald_bedrag, berekenKosten(reis.Prijs_per_persoon, boeking.Aantal_volwas
berekenKosten()
的结果作为nogTeBetalen()
的参数?这是我的密码:
SELECT boeking.Boekingnr, Naam, Telefoonnr, boeking.Aantal_volwassenen, reis.Prijs_per_persoon, boeking.Betaald_bedrag,
berekenKosten(reis.Prijs_per_persoon, boeking.Aantal_volwassenen) AS totaalprijs, nogTeBetalen()
FROM klant
INNER JOIN boeking ON klant.Klantnr = boeking.Klantnr
INNER JOIN reis ON boeking.Reisnr = reis.Reisnr
如果不可能,如何将nogTeBetalen()
的结果显示为每行的一列
我已经试过了,但没用:
SELECT boeking.Boekingnr, Naam, Telefoonnr, boeking.Aantal_volwassenen, reis.Prijs_per_persoon, boeking.Betaald_bedrag,
berekenKosten(reis.Prijs_per_persoon, boeking.Aantal_volwassenen) AS totaalprijs, nogTeBetalen(totaalprijs)
FROM klant
INNER JOIN boeking ON klant.Klantnr = boeking.Klantnr
INNER JOIN reis ON boeking.Reisnr = reis.Reisnr
您可以嵌套调用:
SELECT
b.Boekingnr,
Naam,
Telefoonnr,
b.Aantal_volwassenen,
r.Prijs_per_persoon,
b.Betaald_bedrag,
berekenKosten(r.Prijs_per_persoon, b.Aantal_volwassenen) AS totaalprijs,
nogTeBetalen(berekenKosten(r.Prijs_per_persoon, b.Aantal_volwassenen)) as result
FROM klant k
INNER JOIN boeking b ON k.Klantnr = b.Klantnr
INNER JOIN reis r ON b.Reisnr = r.Reisnr
但是使用子查询可能更有效,因此该过程只调用一次:
SELECT t.*, nogTeBetalen(totaalprijs) as result
FROM (
SELECT
b.Boekingnr,
Naam,
Telefoonnr,
b.Aantal_volwassenen,
r.Prijs_per_persoon,
b.Betaald_bedrag,
berekenKosten(r.Prijs_per_persoon, b.Aantal_volwassenen) AS totaalprijs
FROM klant k
INNER JOIN boeking b ON k.Klantnr = b.Klantnr
INNER JOIN reis ON b.Reisnr = r.Reisnr
) t
附带建议:
- 使用表别名缩短查询并提高其可读性,如上图所示
- 在每个列前面加上它所属的表的(别名),这样查询就不会对底层数据结构产生歧义;
子句中有一些不合格的列需要修复SELECT
SELECT
b.Boekingnr,
Naam,
Telefoonnr,
b.Aantal_volwassenen,
r.Prijs_per_persoon,
b.Betaald_bedrag,
berekenKosten(r.Prijs_per_persoon, b.Aantal_volwassenen) AS totaalprijs,
nogTeBetalen(berekenKosten(r.Prijs_per_persoon, b.Aantal_volwassenen)) as result
FROM klant k
INNER JOIN boeking b ON k.Klantnr = b.Klantnr
INNER JOIN reis r ON b.Reisnr = r.Reisnr
但是使用子查询可能更有效,因此该过程只调用一次:
SELECT t.*, nogTeBetalen(totaalprijs) as result
FROM (
SELECT
b.Boekingnr,
Naam,
Telefoonnr,
b.Aantal_volwassenen,
r.Prijs_per_persoon,
b.Betaald_bedrag,
berekenKosten(r.Prijs_per_persoon, b.Aantal_volwassenen) AS totaalprijs
FROM klant k
INNER JOIN boeking b ON k.Klantnr = b.Klantnr
INNER JOIN reis ON b.Reisnr = r.Reisnr
) t
附带建议:
- 使用表别名缩短查询并提高其可读性,如上图所示
- 在每个列前面加上它所属的表的(别名),这样查询就不会对底层数据结构产生歧义;
子句中有一些不合格的列需要修复SELECT