WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Trubbel med SQL (https://www.wn.se/forum/showthread.php?t=1044410)

Linuus 2010-10-21 16:40

Trubbel med SQL
 
Tjena!

Kan man i SQL göra något liknande detta:

Kod:

SELECT (tbl.ett * calc2) AS calc1, (tbl.sju * tbl.tre) AS calc2 FROM table AS tbl
Problemet ligger alltså i att använda ett alias "calc2" i beräkningen för "calc1"

Går det att göra såhär eller måste man använda någon slags subquery?

Jonas 2010-10-21 18:53

Skulle vara enklare att göra så här:

Kod:

SELECT (tbl.ett * (tbl.sju * tbl.tre)) as calc1, (tbl.sju * tbl.tre) as calc2 FROM table AS tbl
Testade din variant och fick bara "Unknown column 'calc2'"

Linuus 2010-10-21 20:08

Yes, men nu ser inte min query ut precis sådär utan det var bara ett exempel, tyvärr :)

Men det verkar inte som det funkar då den inte vet vad "calc2" är innan den har kört queryn. Får forska vidare på alternativ.

Tack ändå!

Clarence 2010-10-21 22:14

Den vet inget om calc2 innan den hämtar fälten. Skulle du sortera eller gruppera på calc2 skulle det funka utmärkt t ex. Behöver du bearbeta fälten helt fritt i select-delen får du skapa en subquery som hämtar det först. I ditt exempelfall blir det dock betydligt mer effektivt att göra som Jonas säger (kanske 5 gånger snabbare skulle jag tro). Så vad som är bästa lösningen för ditt fall går inte att säga från ditt exempel om det saknar relevans för det riktiga fallet.

Linuus 2010-10-22 11:34

Citat:

Ursprungligen postat av Clarence (Inlägg 20374652)
Den vet inget om calc2 innan den hämtar fälten. Skulle du sortera eller gruppera på calc2 skulle det funka utmärkt t ex. Behöver du bearbeta fälten helt fritt i select-delen får du skapa en subquery som hämtar det först. I ditt exempelfall blir det dock betydligt mer effektivt att göra som Jonas säger (kanske 5 gånger snabbare skulle jag tro). Så vad som är bästa lösningen för ditt fall går inte att säga från ditt exempel om det saknar relevans för det riktiga fallet.

Yes det verkar inte gå som sagt. Men jag löser det med flera querys istället :)

Tack ändå!


Alla tider är GMT +2. Klockan är nu 08:32.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson