Avatar billede kovalt Nybegynder
24. januar 2004 - 15:36 Der er 14 kommentarer og
1 løsning

Right joine to tabeller over to kolonner

Hej

  Jeg har to tabeller. Den en indeholde en liste over ressourcer, der er behov for, hvor den anden indeholder de ressourcer, som er tilgængelige.

Tabel 1 indeholder eks.

Produktnr, ressourcenr, antal
1, 1, 2
1, 2, 3
1, 3, 4
1, 5, 10

Tabel 2 indeholder eks.

Produktnr, ressourcenr, antal
1, 1, 20
1, 2, 50
1, 4, 1
1, 6, 7

Nu vil jeg så gerne ha en liste ud over de ressourcer, som mangler for et givent produkt. Altså noget i stil med

Produktnr, ressourcenr, antal
1, 3, 4
1, 5, 10

Jeg har altså brug for de poster i tabel 1, som der ikke er "dækning" for i tabel 2.

Håber mit spørgsmål er til at forstå. Jeg vil mene, det er noget med en LEFT (OUTHER) JOIN - men er lidt i tvivl, om hvordan det skal laves. En almindelig WHERE-betingelse virker ikke, idet denne jo sletter records i tabel 1 såfremt, der ikkke findes noget ressource i tabel 2.

I er selvfølgelig velkomne til at spørge uddybende :-)

/Kovalt
Avatar billede terry Ekspert
24. januar 2004 - 15:49 #1
Use the Find unmatched query wizard!
Avatar billede terry Ekspert
24. januar 2004 - 15:51 #2
This will make a query with and OUTER JOIN and will set the criteria for the foreign key field to IS Null (doesnt exist)
Avatar billede kovalt Nybegynder
24. januar 2004 - 16:00 #3
De to tabller jeg omtaler ovenfor er begge queries. Betyder det ikke noget for performance (det skal bruges på en webside) at lave en nu query uf fra to allerede eksisterende?

Jeg havde tænkt mig noget med subqueries. men hvis det er ligemeget set ud fra et performancesynspunkt er det fint med guiden til mig...

/kovalt
Avatar billede terry Ekspert
24. januar 2004 - 16:08 #4
Th equestion didnt mention queries but tables! If the tables in the two queries are related then you should be able to make a single query with an OUTER join testing if the table on the OUTER side is empty isung IS NULL. I cant give a precise answer not knowing more about your tables etc.
Avatar billede terry Ekspert
24. januar 2004 - 16:08 #5
I\m off out now, back later
Avatar billede kovalt Nybegynder
25. januar 2004 - 14:26 #6
jeg har følgende:

SELECT antalVagt.vagtNr, antalVagt.gruppenr, antalVagt.antalVagt, antalPerson.antalPerson
FROM antalPerson LEFT JOIN antalVagt
ON antalPerson.vagtNr = antalVagt.vagtnr AND
antalPerson.gruppeNr = antalVagt.gruppeNr

Hvilket virker! Jeg har bare brug for det som RIGHT JOIN

SELECT antalVagt.vagtNr, antalVagt.gruppenr, antalVagt.antalVagt, antalPerson.antalPerson
FROM antalPerson RIGHT JOIN antalVagt
ON antalPerson.vagtNr = antalVagt.vagtnr AND
antalPerson.gruppeNr = antalVagt.gruppeNr

hvilket ikke virker. Kolonnen antalPerson.antalPerson er tom. Hvad kan dette skyldes?
Avatar billede terry Ekspert
25. januar 2004 - 14:41 #7
A OUTER JOIN (LEFT or RIGHT) return records from ONE or BOTH sides of the JOIN. The table which it will always select records from depends on whether or not it is a LEFT or RIGHT!

So IF antalPerson.antalPerson is empty then it is because there is NOT records in antalPerson which are related to antalVagt!

In an OUTER JOIN you have to decide which table you ALWAYS want to see records from even if the related table doesnt contain records!
Once you have decided this you can place the SQL in Access's query builder and you will see a thin line joining the two tables. Right click in the line and select the radio button which gives you the table which you always want to see! This will give you a LEFT or RIGHT join!

If antalPerson.antalPerson is empty then it is because there is no related records on the OUTER side of the JOIN!
Avatar billede kovalt Nybegynder
25. januar 2004 - 14:54 #8
Prøv lige at kigge her: http://www.kovaltsenko.dk/images/db.jpg

Jeg ville gerne at alle posterne fra fra antalVagt bliver vist. I feltet "antal" under forespørgsel 1 ville jeg gerne ha en række NULLs på nær ved gruppe 4 og 8, hvor der gerne skulle stå 2 og 10.

Kan du se hvad der er galt

/kovalt
Avatar billede terry Ekspert
25. januar 2004 - 15:02 #9
I will take a look later, I'm VERY busy at the moment!
Avatar billede kovalt Nybegynder
25. januar 2004 - 15:04 #10
ok
Avatar billede terry Ekspert
25. januar 2004 - 17:39 #11
Can you send me your dB? I need to see the data you have and the tables! NOSPAMeksperten@santhell.dkNOSPAM

you need to remove NOSPAM

If you can give an explanation (in dansih will be fine) of what you want to see then I can maybe do it it in one SQL
Avatar billede terry Ekspert
28. januar 2004 - 18:45 #12
Hi Torben,
have you received the database I sent?
Avatar billede kovalt Nybegynder
29. januar 2004 - 22:44 #13
tak for hjælpen
Avatar billede terry Ekspert
30. januar 2004 - 18:32 #14
You need to accept to close!
Avatar billede terry Ekspert
03. februar 2004 - 16:46 #15
tak Torben!
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