Avatar billede toppus Nybegynder
11. marts 2009 - 12:03 Der er 9 kommentarer

Sql where and

hejsa
Denne linie virker fint når jeg skal hente et udtræk fra en db

SJ="SELECT UNIT.NAME, UNIT.LASTEXECUTED, INV.VALUE FROM (UNIT INNER JOIN UNITINV ON UNIT.UNITID = UNITINV.UNITID) INNER JOIN INV ON UNITINV.INVID = INV.INVID WHERE (((INV.SECTION)='CI') AND ((INV.NAME)='Loc') AND ((INV.VALUE)='"&request("loca")&"'))"

Kan man indsætte en "and" ind og lave endnu et kriterie altså
her sidst i overstående "&request("loca")&"')) >>>>AND INV.SECTION)='CI') AND ((INV.NAME)='Loc')<<<<<"

kan bare ikke få det til at virke hvis det er sådan
Avatar billede keysersoze Guru
11. marts 2009 - 12:39 #1
AND ((INV.VALUE)='"&request("loca")&"') AND INV.SECTION='CI' AND INV.NAME='Loc')"
Avatar billede toppus Nybegynder
11. marts 2009 - 13:53 #2
sÅ burde denne jo også virke, men den finder ikke noget.

SJ="SELECT UNIT.NAME, UNIT.LASTEXECUTED, INV.VALUE FROM (UNIT INNER JOIN UNITINV ON UNIT.UNITID = UNITINV.UNITID) INNER JOIN INV ON UNITINV.INVID = INV.INVID WHERE ((((INV.SECTION)='CI') AND ((INV.NAME)='Loca') [b]AND ((INV.VALUE)='"&request("loca")&"')) and (((INV.SECTION)='CI') AND ((INV.NAME)='Afd') AND ((INV.VALUE)='B'))[b/])"

Har det noget at gøre med at den skal bruge de samme felter to gange??
Avatar billede toppus Nybegynder
11. marts 2009 - 13:54 #3
ups [b] skulle gøre den sidste den FED
Avatar billede keysersoze Guru
11. marts 2009 - 14:06 #4
som den er sat op skal alle forhold være opfyldt - dvs inv.value skal både være lig B og lig din request("loca") og det vil reelt set sige at der kun vil returneres noget hvis din request er lig B.
Avatar billede toppus Nybegynder
11. marts 2009 - 14:20 #5
hmmmm
tabel unit indeholder felterne UNITID, NAME og Lastexecuted
tabel UNITINV indeholder  felterne UNITID og INVID
tabel INV indeholder INVID(nummer), SECTION , NAME, VALUE

det vil sige at mange indvid  i tabel INV henviser til ET nummer i UNITINV, som så henvider til et navn i UNIT

Men det du så siger er, at får at disse kriterier virker så skal begge INV.NAME være ens ?? Det var netup formålet at den skulle lave to kriterier, er der så en ande måde at gøre dette på??
Avatar billede keysersoze Guru
11. marts 2009 - 15:18 #6
nah - det jeg siger er, at ét felt jo ikke kan indeholde 2 værdier og det er det du har stillet op i din SQL siger at inv.value skal være to forskellige værdier (nemlig B og værdien fra request).

Kan inv.value være blandt 2 forskellige værdier kan du bruge OR eller IN - men jeg ved ikke helt hvad du vil opnå.
Avatar billede toppus Nybegynder
11. marts 2009 - 16:30 #7
Jaaaa men på den måde databasen er sammensat, så ville jeg hente de poster som har kriterie A og (and) kriterie B

Jeg kan godt hente de poster som passer med enten krierie a eller b alene, men jeg ville både ha' at
INV.SECTION =CI og at INV.NAME = LOCA og INV.VALUE)=request("loca")
derefter skal den så ud fra disse kriterier hente de poster der passer på INV.SECTION =CI , INV.NAME = afd og INV.VALUE =B

Er du med ? :)

Så det er måske en søgning i en søgning :) men er ikke helt klar over hvordan.
Avatar billede keysersoze Guru
12. marts 2009 - 18:56 #8
ikke helt - du siger jo specifikt, at du vil have unit.name, unit.lasexecuted og inv.value ud som én række og dén række kan kun jo indeholde én værdi i inv.value. skal du have det anderledes ud, men så du får du flere af den samme unit ud, skal du over i noget subselect, fx;

select * from tabel where id IN (select nId from tabel2 where somevalue = 'b') and id IN (select nId from tabel2 where somevalue = 'c')
Avatar billede keysersoze Guru
09. april 2009 - 00:41 #9
lukketid?
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
Kurser inden for grundlæggende programmering

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