Avatar billede oasen Nybegynder
10. juli 2002 - 01:25 Der er 4 kommentarer og
2 løsninger

Join og Count

Jeg har to tabeller, der har følgende struktur:

ID | Navn
1  | Tom
2  | Benny
3  | Sophie
4  | Torben

----------------------

ID | X | Y
1  | 1 |
2  |  | 1
2  | 1 |
4  | 1 |


Hvordan gøres det, hvis jeg kun vil se de brugere, der har markering(1) ud for både X og Y? (Dvs. Benny)

SELECT tabel1.ID, tabel1,Navn, tabel2.ID, tabel2.X, tabel2.Y
FROM tabel2 LEFT JOIN tabel1 ON tabel2.ID = tabel1.ID
WHERE tabel2.X = 1 And tabel2.Y = 1
Osv...

Det virker jo logisk nok ikke, men hvad gør man så?
Avatar billede mini-me Nybegynder
10. juli 2002 - 03:07 #1
SQL1 = "SELECT * FROM TABEL1 WHERE x = 1"
set rs1 = conn.execute(SQL1)

Er ikke helt klar over hvordan du og så henter fra den anden men der kan du blot lave en sætning mere
SQL2 = "SELECT * from table2 where x = 1"
set rs2 = conn.execute(SQL2)
Avatar billede _just4fun_ Nybegynder
10. juli 2002 - 08:05 #2
Du nævner at du kun vil se de folk der matcher, og så er der tale om en inner join.

select t1.navn from [table1] as t1
inner join [table2_1] as vt1
on t1.ID = vt1.ID
inner join [table2_2] as vt2
where vt1.x = 1 and vt2.y = 1

Herefter trækker du bare navn ud af dit recordset. Hvis der ikke er nogen poster i recordsettet... var der ingen med x=1 og y=1
Avatar billede oasen Nybegynder
10. juli 2002 - 12:22 #3
minime ---> Der skal kun laves et recordsæt, og tabel 1 er den øverste.

just4fun ---> Tak, men hvordan hænger table1, table2_1 og table2_2 sammen? Der er jo kun 2 tabeller?!
Skal tabel 2 join'es med sig selv?
Og hvad er forskellen på t1, vt1, vt2?
Avatar billede _just4fun_ Nybegynder
10. juli 2002 - 15:17 #4
vt1 står for virtuel tabel 1.. og 2, og er bare 'kopier' af tabel2. Det man egentlig gør er bare at tildele den samme tabel 2 navne.. og så brude disse navne somom de var  seperate tabeller... Det er lidt et hack...
Jeg ville måske bare tjekke på om der allede var en f.eks. med ID=2 hvis det var mig der skulle lave det, og så lave en update istedet en ekstra insert. Så kunne du nemlig nøjes med den løsning du selv har skitseret.
Avatar billede oasen Nybegynder
10. juli 2002 - 16:31 #5
just4fun---> Jeg har to tabeller der hedder profiltab og brugerpicstab.
Det er en "en til mange"-relation.
FavoritPic og ProfilPic svarer til X og Y i ovenstående eksempel.
Det virker fint, hvis man bare vælger at en af dem skal være lig "1", men ikke hvis man vælger, at begge skal være lig "1".
Håber du kan hjælpe :)


SELECT Sum(brugerpicstab.FavoritPic) As Favs, Sum(brugerpicstab.ProfilPic) As Pic, profiltab.brugernavn, profiltab.Alder, profiltab.Koen, profiltab.SidsteLogin, profiltab.Bopael, profiltab.Dato FROM brugerpicstab RIGHT OUTER JOIN profiltab ON brugerpicstab.brugerID = profiltab.brugerID WHERE (brugerpicstab.FavoritPic) = 1 And (brugerpicstab.ProfilPic) = 1 GROUP BY profiltab.brugernavn, profiltab.Alder, profiltab.Koen, profiltab.SidsteLogin, profiltab.Bopael, profiltab.Dato ORDER BY profiltab.Alder
Avatar billede oasen Nybegynder
11. juli 2002 - 14:02 #6
Ja, jeg fik jo ikke løst problemet, men takker da for hjælpen...
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