Avatar billede nexus-6 Nybegynder
23. april 2002 - 09:42 Der er 6 kommentarer og
1 løsning

Kan denne select lade sig gøre ??

Hej eksperter!
Jeg smider lige en describe af mine tabeller og så min select. Ved godt at select syntaksten er helt forkert, men var den bedste jeg kunne illustere hvad jeg vil.

mysql> describe vaerelse;
+----------+--------------+
| Field    | Type        |
+----------+--------------+
| id      | int(11)      |
| vaerelse | varchar(255) |
| navn    | varchar(255) |
| aktiv    | int(11)      |
+----------+--------------+

mysql> describe transaktioner;
+-------------+--------------+
| Field      | Type        |
+-------------+--------------+
| id          | int(11)      |
| vaerelse    | int(11)      |
| transaktion | int(11)      |
| beloeb      | double      |
| kommentar  | varchar(255) |
| dato        | datetime    |
+-------------+--------------+

mysql> describe transaktionstype;
+------------------+--------------+
| Field            | Type        |
+------------------+--------------+
| id              | int(11)      |
| transaktionsnavn | varchar(255) |
| sorter          | int(11)      |
| kommentar        | varchar(255) |
| brugerplusminus  | int(11)      |
| kasseplusminus  | int(11)      |
+------------------+--------------+

t1=varelse
t2=transaktioner
t3=transaktionstype

select t1.concat(vaerelse,' ',navn), t1.id, t2.sum(t2.beloeb*(t3.brugerplusminus where t3.id = t2.transaktion)) group by vaerelse, max(t2.dato)

Det jeg er mest usikker på er om den tillader en udregning på "t2.beloeb" (t2.beloeb*t3.brugerplusminus) inden at den laver en sum(). Derud over har jeg inden anelse om hvordan ovenstående skal skrives korrekt, hvis det kan lade sig gøre altså.
Eller bliver jeg nød til at behandle det med PHP ??
Resultatet skulle gerne komme ud med:
Navn - saldo - sidste bevægelse(dato)
Avatar billede disky Nybegynder
23. april 2002 - 10:06 #1
prøv med:

select t1.concat(vaerelse,' ',navn), t1.id, t2.sum(t2.beloeb*(t3.brugerplusminus)), max(t2.dato) where t3.id = t2.transaktion group by vaerelse

Prøv at fyr den af og se hvad der sker
Avatar billede nexus-6 Nybegynder
23. april 2002 - 10:09 #2
ERROR 1064: You have an error in your SQL syntax near '(vaerelse,' ',navn), t1.id, t2.sum(t2.beloeb*(t3.brugerplusminus)), ma
x(t2.dato)' at line 1
Avatar billede nexus-6 Nybegynder
23. april 2002 - 10:12 #3
Glæmte lige at erstatte t* med tabelnavne, men noget af det samme resultat:
ERROR 1064: You have an error in your SQL syntax near '(vaerelse,' ',navn), vaerelse.id, transaktioner.sum(transaktioner.belo
eb*(transa' at line 1
Avatar billede tipsen Nybegynder
23. april 2002 - 10:19 #4
Er det gyldig syntaks at skrive: tabelnavn.sum !?
Avatar billede nexus-6 Nybegynder
23. april 2002 - 14:52 #5
ved det ikke ?
Avatar billede nexus-6 Nybegynder
23. april 2002 - 17:02 #6
Er kommet frem til dette her:
select vaerelse, sum(beloeb*brugerplusminus), max(dato) from transaktioner t1 inner join transaktionstype t2 on t1.tra
nsaktion = t2.id group by vaerelse
Det eneste jeg mangler nu er at linke t2.vaerelse til (t1.navn where t2.vaerelse=t1.id)
Nogen forslag ??
Avatar billede nexus-6 Nybegynder
15. september 2004 - 14:29 #7
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester