Problemet er, at når jeg laver en inner/right/left join, så filtreres der resultater fra, hvilket der ikke skal gøres.
Vil have en tabel med følgende, hvor alt budgetteret og alt faktisk forbrug er med. Hvis vare og måned er ens på begge lister, skal de selvfølgelig konsilideres.
Is ther only one record for each vare/måned? If not then make two queries each where you group on Vare/måned and sum on budget or forbrug. THen make another query joining vare/måned and then select vare, måned, budget, forbrug
"Problemet er, at når jeg laver en inner/right/left join, så filtreres der resultater fra" Maybe because you dont have data for each vare/måned in both tables ?
Should end up like this on a new table: vare, måned, budget, forbrug; æble, januar, 10, 20 æble, februar, 20,0 æble, marts, 0, 30 banan, april, 15, 0 appelsin, januar, 0, 10
It isnt so complicated but there is quite a bit of manual work to make table3.
And why do you need to have tables 1 and 2 if you can have it all in one table?
Once its all in table 3 then you dont need the other two tables.
I am sure I could produce one query which would show what you want, but if you could have manage with only one table then I would suggest you do that, it will make things much easier in the long run.
if you can send me an example of your tables then I wil try and make a query which shows what you want. ekspertenATsanthell.dk AT = @ I'll first have time tomorrow evening, hope thats OK.
Synes godt om
Slettet bruger
14. oktober 2008 - 22:40#10
Forespørgsel1: INSERT INTO Tabel3 ( vare, måned, budget ) SELECT Tabel1.vare, Tabel1.måned, Tabel1.budget FROM Tabel1;
Forespørgsel2: UPDATE Tabel3 INNER JOIN Tabel2 ON (Tabel3.vare = Tabel2.vare) AND (Tabel3.måned = Tabel2.måned) SET Tabel3.forbrug = Tabel2.forbrug;
Forespørgsel3: INSERT INTO Tabel3 ( vare, måned, forbrug ) SELECT Tabel2.vare, Tabel2.måned, Tabel2.forbrug FROM Tabel2 LEFT JOIN Tabel1 ON (Tabel2.vare = Tabel1.vare) AND (Tabel2.måned = Tabel1.måned) WHERE (((Tabel1.måned) Is Null) AND ((Tabel1.vare) Is Null));
spg: Meningen med det hele er, at det skal ske automatisk ligeså snart ændringer fremkommer i tabel1 eller tabel2. Det skal helst undgå manuelle funktioner.
terry: That might be a little difficult, since its work related and private. Sorry.
Guess I'm stuck then?
Synes godt om
Slettet bruger
15. oktober 2008 - 00:23#12
SELECT Tabel1.vare, Tabel1.måned, Tabel1.budget, Tabel2.forbrug FROM Tabel1 INNER JOIN Tabel2 ON (Tabel1.vare = Tabel2.vare) AND (Tabel1.måned = Tabel2.måned) UNION SELECT Tabel1.vare, Tabel1.måned, Tabel1.budget, 0 AS forbrug FROM Tabel1 LEFT JOIN Tabel2 ON (Tabel1.måned = Tabel2.måned) AND (Tabel1.vare = Tabel2.vare) WHERE (((Tabel2.vare) Is Null) AND ((Tabel2.måned) Is Null)) UNION SELECT Tabel2.vare, Tabel2.måned, 0 AS budget, Tabel2.forbrug FROM Tabel1 RIGHT JOIN Tabel2 ON (Tabel1.vare = Tabel2.vare) AND (Tabel1.måned = Tabel2.måned) WHERE (((Tabel1.vare) Is Null) AND ((Tabel1.måned) Is Null));
You only need send examples of table1 and table2 with the fields I need and some test data, just to save me time having to make it. You dont need to send the full dB or anything not relevant to the question.
I figured it out, but it was as spg answered. Create 3 queries and then UNION them.
Thanx anyway.
Synes godt om
Ny brugerNybegynder
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.