Avatar billede litop Nybegynder
02. oktober 2005 - 21:36 Der er 26 kommentarer og
1 løsning

tilføj række sorteret på dato og kommune

På den igen :-)
Nå, Min ene tabel består af en masse pris observationer (58387) samt dato (366 dage) og kommune, plus en masse andre. Min anden tabel består af en dato, kommune samt en variabel(historik2) der fortæller hvor mange butikker der dagen forinden satte en bestemt pris. Mit problem er nu at jeg skal have disse to tabeller hægtet sammen. Det bør kunne laves via en forespørgsel; hvor man siger noget med hvis dato i den ene tabel er lig dato i den anden og kommune lig kommune så skal historik2 tallet tilføjes og ellers skal der bare angives "0".
Gir det mening?
Avatar billede terry Ekspert
03. oktober 2005 - 07:53 #1
You should be able to do it in a query. Make a new query and add both tables, then using drag and drop join the kommune field and dato fields. you will end up with to wthin lines jong both tables.
Avatar billede terry Ekspert
03. oktober 2005 - 07:54 #2
Now you just need to add the fields which you want to see in the query.
Avatar billede terry Ekspert
03. oktober 2005 - 08:02 #3
Your SQL will look something like this

SELECT tblkommune.*, tblPriskommune.*
FROM tblkommune INNER JOIN tblPriskommune ON (tblkommune.dato = tblPriskommune.dato) AND (tblkommune.kommune = tblPriskommune.kommune);

where tblkommune is the one containing historik
Avatar billede litop Nybegynder
03. oktober 2005 - 08:36 #4
SELECT
FROM [Pris Observation] INNER JOIN historik2 ON ([Pris Observation].Kommune = historik2.Kommune) AND ([Pris Observation].Dato = historik2.Dato);

Men det virker ikke. I begge tabeller er der flere observationer for en dato, dog mange flere i Pris observation. I tabellen historik2 er det kun de kommune der har en historik2 værdi over nul der er medtaget på den givne dato..
Kan dette noget af dette være årsagen? - det virker ihvertfald ikke. Forespørgslen blir kørt men resultatet outcome tabellen er tom..
Avatar billede terry Ekspert
03. oktober 2005 - 08:55 #5
what do you mean by "jeg skal have disse to tabeller hægtet sammen"?


You can use a UNION JOIN to see all records from both tables but that is not the same as selecting records from two tables so that informationfrom related records is shown on the same line

Can you give an example of the data and what you want to see?
Avatar billede terry Ekspert
03. oktober 2005 - 08:57 #6
If there is the cance that there is no information in one of the tables then you need to alter the information to an OUTER JOIN

In the query builder right click on the thin line and then choose from the options available which one you want .
Avatar billede terry Ekspert
03. oktober 2005 - 08:58 #7
cance  = chance
Avatar billede terry Ekspert
03. oktober 2005 - 09:08 #8
try this

SELECT
FROM [Pris Observation] LEFT JOIN historik2 ON ([Pris Observation].dato = historik2.dato) AND ([Pris Observation].kommune = historik2.kommune);
Avatar billede litop Nybegynder
03. oktober 2005 - 09:28 #9
"jeg skal have disse to tabeller hægtet sammen"? I nedd the information from historik2 in Pris Observation, matched on dates and kommune.

Join (Union + Outer) kan heller ikke klare det.
Prøver at beskrive tabellerne:
Pris Observation:
Id (autonumbering) - Station - Adresse - dato - postnummer - kommune - weekend - pris - mode pris - historik1 - dummydk - dummy. Poster 58387

historik2:
Dato - kommune - historik2. Poster 2869

Problemet kan måske skyldes at i begge tabeller er en given dato observeret flere gange, ligeledes for kommune..
Avatar billede terry Ekspert
03. oktober 2005 - 09:38 #10
Can you explain what you want to see from the two tables? We can now see the table design but that deosnt tell us how you would like to see the result.

you say "Problemet kan måske skyldes at i begge tabeller er en given dato observeret flere gang"

if you want to see a number of observations for a given kommune/date then this isnt a problem, but if you only expect one then your table design is wrong.
Avatar billede litop Nybegynder
03. oktober 2005 - 09:41 #11
Outcome:
Id (autonumbering) - Station - Adresse - dato - postnummer - kommune - weekend - pris - mode pris - historik1 - dummydk - dummyak - *historik2*

Altså Historik2 skal indsættes i tabel Pris Observation således at hvis der er datoen og kommune fra tabellen Pris Observation er lig dem fra tabellen Historik2 så indsættes værdien historik2 og ellers tilføjes bare "0".

Gir det mening?
Avatar billede terry Ekspert
03. oktober 2005 - 09:52 #12
but what do we do if there is more than one record in either table?

You could have two records in [Pris Observation] with the same kommune/date and also
in table historik2 with the same kommune/date.

What is supposed to happen here?
Avatar billede litop Nybegynder
03. oktober 2005 - 09:58 #13
I pris observation er det rigtigt at en dato godt kan have mange observationer for en given kommune.
I historik2 er en given kommune kun med max en gang per dato, ofte er dog kun 7-10 kommuner per dato, altså der findes ikke en værdi for hver enkelt kommune til hver dato.
Avatar billede terry Ekspert
03. oktober 2005 - 10:06 #14
so if there is more than one record in [Pris Observation] with the same kommune/date then they will get the same historik2 from historik, is that correct?
Avatar billede litop Nybegynder
03. oktober 2005 - 10:08 #15
ja lige præcis
Avatar billede terry Ekspert
03. oktober 2005 - 10:09 #16
this should be correct if I have all the information

SELECT [Pris Observation].*, historik2.historik2
FROM [Pris Observation] LEFT JOIN historik2 ON ([Pris Observation].dato = historik2.dato) AND ([Pris Observation].kommune = historik2.kommune);
Avatar billede litop Nybegynder
03. oktober 2005 - 10:16 #17
den vil gerne køre forespørgslen men rækken historik2 indeholder ingen værdier
Avatar billede terry Ekspert
03. oktober 2005 - 10:16 #18
You could also use this

SELECT [Pris Observation].*, IIf(IsNull([historik2].[historik2]),0,[historik2].[historik2]) AS obs
FROM [Pris Observation] LEFT JOIN historik2 ON ([Pris Observation].dato = historik2.dato) AND ([Pris Observation].kommune = historik2.kommune);
Avatar billede terry Ekspert
03. oktober 2005 - 10:17 #19
"den vil gerne køre forespørgslen men rækken historik2 indeholder ingen værdier"

is this for ALL kommune/dato or just for those where there is no historik2?
Avatar billede litop Nybegynder
03. oktober 2005 - 10:20 #20
for all
Avatar billede litop Nybegynder
03. oktober 2005 - 10:25 #21
undskyld der er en værdi men den er "0" for alle...
Ændres left til right join kommer alle historik2 værdierne men så er alle de øvrige felter tomme
Avatar billede terry Ekspert
03. oktober 2005 - 10:27 #22
is it possible to see the data?
eksperten@NOSPAMsanthell.dk
remove NOSPAM
Avatar billede litop Nybegynder
03. oktober 2005 - 10:32 #23
jeg har eksporteret dem til excel ark og de fylder hhv. 11,8 MB og 197 KB vil du have dem på mail? eller skal jeg slette noget fra den store først?
Avatar billede litop Nybegynder
03. oktober 2005 - 10:56 #24
sendt men Pris Observation er altså kun et udpluk da det jo er meget stort
Avatar billede terry Ekspert
03. oktober 2005 - 11:14 #25
I'll look at it as soon as I get a break :o)
Avatar billede litop Nybegynder
03. oktober 2005 - 12:27 #26
Super!! thanks
Avatar billede terry Ekspert
03. oktober 2005 - 12:37 #27
selv tak :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