Engine^Medlem sedan dec. 20003 887 inlägg Jag har stött på lite bekymmer med en fråga, eller rättare sagt med att välja rätt tabellkolumn för ett värde. Jag ska försöka beskriva så gott det går...
tblIncomingNote
-dblArtikelID (PK)
-lngOrderID (PK)
tblIncomingOrder
-lngOrderID (PK)
-intKundID
tblArtikelRegister
-dblArtikelID (PK)
-cryInköpsPris
tblPriserBehandling
-dblArtikelID (PK)
-intKundID (PK)
-cryPris
Hade inte den sista tabellen vart med i leken är det här inget problem, men nu är det så att om artikel i tblIncomingNote har ett intKundID = 1 i tblIncomingOrder ska jag välja ut cryPris från tblPriserBehandling annars ska jag välja ut cryInköpsPris från tblArtikelRegister. Jag hoppas att de tänkta relationerna framgår.
Jag har försökt lösa detta med en IIf-sats, typ:
SELECT dblArtikelID, IIf(intKundID = 1 AND dblArtikelID IN tblPriserBehandling, cryPris, cryInköpsPris)...
Men så skriver man ju inte och jag vet inte alls hur jag ska vrida till det här. Jag vet inte ens om det går, men jag har blivit förvånad förut över möjligheterna med SQL.
Känner någon sig manad att ge mig en lösning?
LarsGMedlem sedan dec. 200012 464 inlägg SELECT n.dblArtikelID, IIf(o.intKundID = 1,
p.cryPris, cryInköpsPris)
from ((tblIncomingNote n inner join tblIncomingOrder o
on ( n.lngOrderId = o.lngOrderId))
inner join tblArtikelRegister a on
(a.dblArtikelID = n.dblArtikelId))
left outer join tblPriserBehandling p on
(a.dblArtikelID = n.dblArtikelID
and o.intKundID = p.intKundID)
Engine^Medlem sedan dec. 20003 887 inlägg Jag har stött på ett litet problem. Men, till att börja med så har jag måsta ändra på frågan, då Access inte verkar klara av två uttryck i ON-villkoret för LEFT JOINen (kopplingsuttrycket stöds ej.). Detta ställer till en hel del bekymmer för mig... dubletter! Går detta att komma runt på något praktiskt vis?
Engine^Medlem sedan dec. 20003 887 inlägg Så gott som klar med detta lilla bekymmer... ;) Nu ser frågan ut så här
SELECT tIN.dblArtikelID, strKundArtikelID, strNamn, intLevAntal & ' / ' & intAntal,
IIf(tPB.dblArtikelID = tAR.intArtikelID AND tPB.intKundID = tIO.intKundID, tPB.cryPris, cryInköpsPris) AS cryPris, tIN.intLevStatus
FROM ((tblIncomingNote tIN
LEFT JOIN tblPriserBehandling tPB
ON tPB.dblArtikelID = tIN.dblArtikelID)
INNER JOIN tblArtikelRegister tAR
ON tIN.dblArtikelID = tAR.intArtikelID)
INNER JOIN tblIncomingOrder tIO
ON tIO.lngOrderID = tIN.lngOrderID
WHERE tIN.lngOrderID = 438
Problemet som uppstår nu är att eftersom vissa artiklar har ett pris för behandling och ett för försäljning, så returnerar frågan två poster för dessa. Nu tänkte jag komma runt det här med att köra TOP 1 och ORDER BY 5. Det ger mig rätt värde, men det känns inte säkert att köra på det sättet... går det att "joina bort" ;) den post med det riktiga priset ifall ett behandlingspris ska hämtas?
red.
jag har kommit fram till att TOP 1 var en väldigt dum lösning... det hade förvisso fungerat kalas om varje order endast innehöll en artikel, men så är ju inte fallet.
Jag behöver hjälp... frågan gör ju precis som jag vill, men hur ska jag få den att inte returnera båda priserna?