/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Select med betingelser
Fra : n\)


Dato : 14-03-07 15:33

Hej

Glo blind i det, håber at i kan hjælpe.

Min tabel

ID value
1 25
2 30
3 45
4 1
6 4

Min sql steng er følgende

Select * from tabel where value = 25 and value = 4

resultat er tom, ved godt at betingelse ikke bliver opfyldt derfor returnere
det tom.

men jeg kan ikke bruge "in" select * from tabel where value in (25,4)

da jeg ville have at 25 og 4 skal opfyldes, er det forkert database design
eller er der en anden måde at gøre det på ??

MVH
N9



 
 
Jens Gyldenkærne Cla~ (14-03-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-03-07 15:48

n) skrev:

> Min tabel
>
> ID value
> 1 25
> 2 30
> 3 45
> 4 1
> 6 4
>
> Min sql steng er følgende
>
> Select * from tabel where value = 25 and value = 4


Det giver som du selv er inde på ikke noget resultat. Value kan
ikke være 25 og 4 på samme tid.


> men jeg kan ikke bruge "in" select * from tabel where value in
> (25,4)

Hvilket resultat vil du gerne have ud?

SELECT * FROM tabel WHERE value IN (4, 25)

- vil give:

ID    value
1    25
6    4


> da jeg ville have at 25 og 4 skal opfyldes,


På én gang?
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

n\) (14-03-2007)
Kommentar
Fra : n\)


Dato : 14-03-07 15:55



> På én gang?


Hej

Det er mig som prøver at slippe udenom på det nemeste måde.

Jeg har følgende tabel

tabel1

ID Ref value
1 2 5
2 2 4
3 3 4
4 4 5

tabel2

ID name
2 Tekst2
3 Tekst3
4 Tekst4


Det jeg så ville have er at hvis brugeren vælger value(4 og 5) skal jeg kun
hente Tekst2 da value (4 og 5) er opfyldt.


Håber at du kan se hvad jeg mener.

Tak for interessen.

N9



Kristian Damm Jensen (14-03-2007)
Kommentar
Fra : Kristian Damm Jensen


Dato : 14-03-07 20:20

n) wrote:
>> På én gang?
>
>
> Hej
>
> Det er mig som prøver at slippe udenom på det nemeste måde.
>
> Jeg har følgende tabel
>
> tabel1
>
> ID Ref value
> 1 2 5
> 2 2 4
> 3 3 4
> 4 4 5
>
> tabel2
>
> ID name
> 2 Tekst2
> 3 Tekst3
> 4 Tekst4
>
>
> Det jeg så ville have er at hvis brugeren vælger value(4 og 5) skal
> jeg kun hente Tekst2 da value (4 og 5) er opfyldt.
>
>
> Håber at du kan se hvad jeg mener.

select name
from tabel2 t2
where exists (select * from tabel1 t1 where t2.ID = t1.ID and values = 4)
and exists (select * from tabel1 t1 where t2.ID = t1.ID and values = 25)

De to subselects kan omskrives til to joins (så skal man bare huske at bruge
forskelligt alias for de to forekomster af tabel1), men det vinder ikke
noget, hverken i læsbarhed eller (for et ordentligt DBMS) performance.

Et problem med denne form for problem, er at det ikke er muligt at give en
generel løsning for et vilkårligt antal valgte værdier (for 3 værdier skal
bruges 3 subselects etc.) med mindre man vil opbygge sin select dynamisk.

--
Venlig hilsen /Best regards
Kristian Damm Jensen



n\) (15-03-2007)
Kommentar
Fra : n\)


Dato : 15-03-07 10:48

> Et problem med denne form for problem, er at det ikke er muligt at give en
> generel løsning for et vilkårligt antal valgte værdier (for 3 værdier skal
> bruges 3 subselects etc.) med mindre man vil opbygge sin select dynamisk.

Hej

Tak for hjælpen, det er en dynamsik SQL så, det bliver på din måde.
Kan ikke bygge database om på nuværende tidspunkt.

MVH
N9



Michael Zedeler (14-03-2007)
Kommentar
Fra : Michael Zedeler


Dato : 14-03-07 23:47

n) skrev:
> Glo blind i det, håber at i kan hjælpe.
>
> Min tabel
>
> ID value
> 1 25
> 2 30
> 3 45
> 4 1
> 6 4
>
> Min sql steng er følgende
>
> Select * from tabel where value = 25 and value = 4
>
> resultat er tom, ved godt at betingelse ikke bliver opfyldt derfor returnere
> det tom.
>
> men jeg kan ikke bruge "in" select * from tabel where value in (25,4)
>
> da jeg ville have at 25 og 4 skal opfyldes, er det forkert database design
> eller er der en anden måde at gøre det på ??

Hvis resultatet skal være at du får begge rækker ud skal det hedde

select * from tabel where value = 25 or value = 4

Husk at alle rækker skal opfylde samtlige af de kritierier, man skriver
på. Med din forespørgsel kigger databasen på rækkerne i tabel en for en
og undersøger om den kan finde nogle rækker hvor værdien af value er
både 4 og 25 - altså på den samme række. Dem findes der nok ikke så
mange af

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Søg
Reklame
Statistik
Spørgsmål : 177449
Tips : 31962
Nyheder : 719565
Indlæg : 6408120
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste