Avatar billede gkn2000 Nybegynder
08. januar 2003 - 17:26 Der er 43 kommentarer og
1 løsning

find to records

Hej allesammen, er der en der kan fortælle mig hvordan jeg finder den brugerID der har 'tal' 1 og 2 .. ikke kun 1 eller 2.

BId    | tal |
-------------
1      | 1  |
1      | 2  |
1      | 3  |
2      | 1  |
2      | 3  |

Resultatet skulle gerne give 'BId' 1.
Avatar billede arnvig Nybegynder
08. januar 2003 - 17:29 #1
select Bid from Tabel where bid = 1 and tal = 1
Avatar billede arnvig Nybegynder
08. januar 2003 - 17:31 #2
næ det var vist ikke rigtigt
så hellere

select bid
from tabel a
where tal = 1
and exist ( select bid
            from tabel b
            where a.bid = b.bid
            and b.tal = 2)
Avatar billede arnvig Nybegynder
08. januar 2003 - 17:32 #3
exist = exists
Avatar billede terry Ekspert
08. januar 2003 - 17:34 #4
SELECT * FROM YourTable WHERE brugerID  in (1,2)
Avatar billede gkn2000 Nybegynder
08. januar 2003 - 17:35 #5
nix.. jeg skal finde (ikke vide) alle de BId'er der både har 'tal' 1 og 'tal' 2..... :o)
Avatar billede terry Ekspert
08. januar 2003 - 17:35 #6
Oops, forget that, not reading the question correctly!
Avatar billede arnvig Nybegynder
08. januar 2003 - 17:36 #7
jeps, min løsning #2 gør netop det
Avatar billede kabbak Professor
08. januar 2003 - 17:37 #8
SELECT Tabel1.Bid, Tabel1.nr
FROM Tabel1
WHERE (((Tabel1.Bid)=1) AND ((Tabel1.nr)=1 Or (Tabel1.nr)=2));
Avatar billede arnvig Nybegynder
08. januar 2003 - 17:38 #9
hehe kabbak, not even close
Avatar billede kabbak Professor
08. januar 2003 - 17:41 #10
Ooooooooo både forsent og forkert :{
Avatar billede gkn2000 Nybegynder
08. januar 2003 - 17:48 #11
arnvig, jeg tro på din løsning nr. 2 men jeg kan sq ikke få det til at virke ... hvad er "tabel b" og hvor kommer a.bid og b.bid fra????
Avatar billede kabbak Professor
08. januar 2003 - 17:56 #12
SELECT Tabel.Bid, Tabel.Tal, Tabel_1.Tal
FROM Tabel AS Tabel_1 INNER JOIN Tabel ON Tabel_1.Bid = Tabel.Bid
WHERE (((Tabel.Bid)=1) AND ((Tabel.Tal)=1) AND ((Tabel_1.Tal)=2));

Tag din tabel ind i forespørgslen 2 gange og sæt så det ger ind.
Avatar billede mugs Novice
08. januar 2003 - 17:57 #13
SELECT Tabel1.BId, Tabel1.tal
FROM Tabel1
WHERE (((Tabel1.BId)=1) AND ((Tabel1.tal)=2));
Avatar billede kabbak Professor
08. januar 2003 - 17:58 #14
ger = her
Avatar billede kabbak Professor
08. januar 2003 - 18:18 #15
Efter jeg har nærlæst spørgsmålet, er sagen denne:
Vi skal finde alle der har både 1 og 2 i tal ikke 1 eller 2
Jeg tror kun at det kan gøres på min måde
Avatar billede terry Ekspert
08. januar 2003 - 18:22 #16
SELECT DISTINCT Table1.Bid, DCount("Bid","Table1"," Bid = " & [bid] & " AND( tal=1 or tal = 2)") AS cnt
FROM Table1
WHERE (((DCount("Bid","Table1"," Bid = " & [bid] & " AND( tal=1 or tal = 2)"))=2));
Avatar billede mugs Novice
08. januar 2003 - 18:23 #17
Jeg mener nu også denne fungerer. Den eneste forskel fra mit tidligere svar er, at jeg har tilføjet feltet BrugerID. Den er afprøvet og så vidt jeg kan se fungerer den:


SELECT Tabel1.BrugerID, Tabel1.BId, Tabel1.tal
FROM Tabel1
WHERE (((Tabel1.BId)=1) AND ((Tabel1.tal)=2));
Avatar billede terry Ekspert
08. januar 2003 - 18:32 #18
arnvigs works with a SMALL alteration

select bid
from table1 AS a
where tal = 1
and exists ( select bid
            from table1 AS  b
            where a.bid = b.bid
            and b.tal = 2)

what is happening is that a select is made on table1 and the table gets the alias name (a) then another select is made where table1 gets the alias (b)
You can use AS but it is not necessary.

and exists instead of exists.

So gkn2000 all you should need to do is replace the table name (table1) to th ecorrect name of the table and it should work.
Avatar billede terry Ekspert
08. januar 2003 - 18:34 #19
gkn2000>Are you 100%sure that teh accepted answer (SELECT Tabel1.Bid, Tabel1.nr
FROM Tabel1
WHERE (((Tabel1.Bid)=1) AND ((Tabel1.nr)=1 Or (Tabel1.nr)=2));)

works? I am not!
Avatar billede kabbak Professor
08. januar 2003 - 18:38 #20
Terry trr du ikke det er dette fra kl. 17:56:58 han mener
Avatar billede terry Ekspert
08. januar 2003 - 18:39 #21
gkn2000 try this!
The accpeted answer DOES NOT work! It only works because the SQL includes
WHERE (((Tabel1.Bid)=1)
and the data happens to be correct for this query
Add another record for BID = 2 and tal = 2 then it will NOT be inclluded in the result

SELECT Tabel1.Bid, Tabel1.nr
FROM Tabel1
WHERE ((Tabel1.nr)=1 Or (Tabel1.nr)=2));
Avatar billede terry Ekspert
08. januar 2003 - 18:42 #22
Yes, that should work, I was looking at the accepted answer :o)
Avatar billede terry Ekspert
08. januar 2003 - 18:49 #23
but there IS still an error kabbak!
REMOVE (Tabel.Bid)=1
and it might help :o)
Avatar billede gkn2000 Nybegynder
08. januar 2003 - 18:49 #24
Hej terry, Nu har jeg prøvet din forslag og hvis du nærlæser mit spørgsmål skal jeg kun bruge de/den record hvor både tal 1 og tal 2 er i. Ikke dem hvor een af dem er. Og Or betyder eller! does it not???

Hej kabbak, Jeg ved godt at du har svarat men hvad gør jeg hvis jeg også vil have 'tal' 3 med altså både 1 og 2 og 3. Kan man det???
Avatar billede terry Ekspert
08. januar 2003 - 18:56 #25
gkn2000 thats exactly what
SELECT DISTINCT Table1.Bid, DCount("Bid","Table1"," Bid = " & [bid] & " AND( tal=1 or tal = 2)") AS cnt
FROM Table1
WHERE (((DCount("Bid","Table1"," Bid = " & [bid] & " AND( tal=1 or tal = 2)"))=2));
 
IT DOES! It gives you ONE bid which has tal=1 AND tal=2
Avatar billede kabbak Professor
08. januar 2003 - 18:57 #26
SELECT Tabel.Bid, Tabel.Tal, Tabel_1.Tal, Tabel_2.Tal
FROM Tabel AS Tabel_2 INNER JOIN (Tabel AS Tabel_1 INNER JOIN Tabel ON Tabel_1.Bid = Tabel.Bid) ON Tabel_2.Bid = Tabel.Bid
WHERE (((Tabel.Bid)=1) AND ((Tabel.Tal)=1) AND ((Tabel_1.Tal)=2) AND ((Tabel_2.Tal)=3));
Avatar billede terry Ekspert
08. januar 2003 - 18:58 #27
You shouldnt look at the SQL if you dont know what it is doing !

The answer is in the WHERE (I am only selecting those WHERE I find TWO records)

WHERE (((DCount("Bid","Table1"," Bid = " & [bid] & " AND( tal=1 or tal = 2)"))=2));
Avatar billede gkn2000 Nybegynder
08. januar 2003 - 19:04 #28
Ok terry, Jeg har fået det til at virke med din metode ...men den er super laaaaagsom. hvorfor det???
Avatar billede terry Ekspert
08. januar 2003 - 19:07 #29
well it depends on how many  records you have but it is more than likely the Dcount
Avatar billede gkn2000 Nybegynder
08. januar 2003 - 19:12 #30
der er ca. 1300 records (and counting)
Avatar billede arnvig Nybegynder
08. januar 2003 - 19:18 #31
Det er simpelthen for dumt.
Her kommer man med det korrekte svar på spørgsmålet og en anden, som kommer med en eller anden feeble-løsning løber med pointene, fordi spørgeren ikke er i stand til at vurdere svaret korrekt.
Der røg min interesse i at hjælpe her på eksperten.
Avatar billede terry Ekspert
08. januar 2003 - 19:23 #32
gkn>1300 isnt many!
arnvig> there IS a small error in your SQL exist (exists) !!!!!
Avatar billede arnvig Nybegynder
08. januar 2003 - 19:26 #33
Which I happened to correct some 37 seconds later, and which shouldnt be any problem for anyone with just a remote knowledge of SQL.
Nevermind, my statement still stands. This sucks !
Avatar billede kabbak Professor
08. januar 2003 - 19:30 #34
Terry > jeg havde ikke set din kommentar fra kl. 18:49:18, det er rigtig jeg søger ikke på alle "Bid", jeg havde stadigvæk ikke læst spørgsmålet rigtig.

Så hvis i ( terry og arnvig ) vil have nogle point, kan i få nogle af mig.
Avatar billede terry Ekspert
08. januar 2003 - 19:31 #35
didnt see that.
Arnvig>No need to get upset, if it helps I'll give you some points?
Avatar billede terry Ekspert
08. januar 2003 - 19:34 #36
thanks kabbak, no problem, I have LOADS which I cant use for much other than getting a BIG head with :o)
but I DO think arnvig should get a share!
Avatar billede kabbak Professor
08. januar 2003 - 19:38 #37
Arnvig hvor meget vil du have. Maks 60 points ;)
Avatar billede arnvig Nybegynder
08. januar 2003 - 19:41 #38
No, Terry, it wouldnt help if you gave me all of your points. (Or any of Kabbaks) Its not the points , its the principle. I hate it when you take the time to come up with the right answer, and the people asking, dont give a s**t.
The points are a symbol that says: "You came up with an answer, when I needed it, Thanx". People should be more carefull how they award points.
Avatar billede arnvig Nybegynder
08. januar 2003 - 19:42 #39
Tak, Kabbak, det er ok. Vi stopper her. Have a nice day.
Avatar billede kabbak Professor
08. januar 2003 - 19:43 #40
OK så afslutter vi han i ha' det godt.
Avatar billede kabbak Professor
08. januar 2003 - 19:44 #41
han = her
Avatar billede terry Ekspert
08. januar 2003 - 19:46 #42
arnvig>I understand FULLY, I too have been in the very same boat MANY times. But just to support gkn2000 (a little) take a look at the comment he placed Kommentar: gkn2000
08/01-2003 17:48:12

He is NOT sure how to use this query and thats why I place a coment later (tying) to explain!

Anyway, hope to see you around :o)
Avatar billede arnvig Nybegynder
08. januar 2003 - 19:58 #43
Terry: No wonder the IT business is running like hell. All the kids are out there coding, and all the experts are out of work, passing time by helping all the kids. geees, guees i wanna be an orca in my next life.
Avatar billede terry Ekspert
08. januar 2003 - 20:06 #44
:o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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