webForumDet fria alternativet

Förfallna Fakturor

3 svar · 534 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Tjena,
Jag försöker få ut fakturor från en MySQL databas, men det går sådär.
Hade en lösning som jag trodde funkade sen tidigare:

SELECT
t1.nFirstName, t1.nLastName, t1.nPersNum, t1.rec_magic_num, t1.fakt_date, t1.fakt_forfallo, t1.bet_date,
t2.gId 
FROM tbl_sschool_notifications t1 INNER JOIN tbl_sschool_groups t2
ON t1.gId = t2.gId 
WHERE EXTRACT(DAY FROM t1.fakt_date) + t1.fakt_forfallo <= CURDATE() 
AND coalesce(date(bet_date), null) is null
ORDER BY t1.rec_magic_num DESC, t2.lId ASC, t2.gId ASC, t1.nAnmTime ASC

Det här fungerar inte så bra, nästan alla fakturor hämtas, även de som är betalda.
I min databas har jag bla. dessa fält:

fakt_date (DATETIME)
fakt_forfallo (INT)
bet_date (DATETIME)
bet_sum (INT)

Tanken är nu att jag ska hämta de poster där fakt_date + fakt_forfallo <= CURDATE() (Dagens datum).
Hur skulle en sådan fråga se ut?

Jag har testat med det här:

WHERE t1.fakt_date INTERVAL t1.fakt_forfallo DAY > CURDATE()

Fast jag får ett felmeddelande, så jag "antar" att jag inte kan använda en kolumns värde som intervall..?

Tack!

LarsGMedlem sedan dec. 200012 464 inlägg
#2
WHERE t1.fakt_date + INTERVAL t1.fakt_forfallo DAY > CURRENT_DATE

vad menar du med följande

coalesce(date(bet_date), null) is null

?

Enligt vad jag kan förstå är det samma sak som

bet_date is null

varför använder du datetime och inte date som datatyp?

Om du får något fel är det bra om du postar felmeddelandet också.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

LarsG skrev:

vad menar du med följande[kod]coalesce(date(bet_date), null) is null

bet_date är en kolumn där datumet betalningen lagras, när den är NULL (Eller 0 eller inte ett datum) är fakturan inte betald.
Fick hjälp av nån här på wF med just den raden, men när du säger, funkar det ju lika bra med ...IS NULL

LarsG skrev:

varför använder du datetime och inte date som datatyp?

Från början är databasen en Access databas, som jag konverterat med MySQl Migration Toolkit, har säkert med det att göra. Men att tidstämpel finns med ser jag bara som en bra sak, när man tex. ska sorteras efter när betalningen skedde, eller om man sorteras i vilken ordning en grupp har fakturerats.

LarsG skrev:

Om du får något fel är det bra om du postar felmeddelandet också.

Javisst, dumt av mig.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTERVAL t1.fakt_forfallo DAY > CURRENT_DATE ORDER BY t1.rec_magic_num DESC, t2.' at line 1

Och skriver jag ut frågan i sin helhet:

SELECT 
t1.nId, t1.gId AS anm_gId, t1.nName, t1.nFirstName, t1.nLastName, t1.nPersNum, t1.nAnmTime, t1.nAnmQueued, t1.rec_magic_num, 
t1.fakt_date, t1.fakt_forfallo, t1.bet_date, 
t2.gId AS gru_gId, t2.lId, t2.gName, t2.gDayTime, t2.gStartDate, t2.gEndDate, t2.gPlace, t2.gPrice 
FROM tbl_sschool_notifications t1 INNER JOIN tbl_sschool_groups t2 
ON t1.gId = t2.gId 
WHERE t1.fakt_date INTERVAL t1.fakt_forfallo DAY > CURRENT_DATE 
ORDER BY t1.rec_magic_num DESC, t2.lId ASC, t2.gId ASC, t1.nAnmTime ASC
MickeA.comMedlem sedan feb. 20034 441 inlägg
#4

LarsG skrev:

WHERE t1.fakt_date + INTERVAL t1.fakt_forfallo DAY > CURRENT_DATE

Funkar kanonbra, nu hämtas "rätt" fakturor, tack!

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)