jimmydk, som jeg forklarer nedenfor mener jeg at dette query giver det resultat du er ude efter. Derfor opretter jeg dette som svar.
SELECT m.Navn, Beskrivelse, p_idag.Points AS Points_idag, p_igaar.Points AS Points_igaar
FROM medlem m
LEFT JOIN (SELECT * FROM point WHERE Datoen = (SELECT MAX(Datoen) FROM point)) AS p_idag ON m.Navn = p_idag.Navn
LEFT JOIN (SELECT * FROM point WHERE Datoen = (SELECT SUBDATE((SELECT MAX(Datoen) FROM point), INTERVAL 1 DAY))) AS p_igaar ON m.Navn = p_igaar.Navn
ORDER BY m.Navn;
I #3 er der adskillige problemer.
(1) Skoent "SELECT MAX(Datoen) FROM Point" finder den sidste dato finder "MAX(Datoen) -1" ikke den naestsidste dag. Du skal bruge et udtryk som dette: "SELECT SUBDATE((SELECT MAX(Datoen) FROM jimmydk_point), INTERVAL 1 DAY)".
(2) Det vil sikkert kunne forekomme at der er medlemmer der ikke har faaet points baade idag og igaar. For eksempel, der kommer vel nye medlemmer fra tid til anden og paa den foerste medlemsdag kan der ikke have vaeret points igaar. Dem vil du vel have med. Saa din join kan ikke vaere det gammeldags udtryk "FROM Point, Medlem WHERE ... Point.Navn = Medlem.Navn. Du maa bruge en LEFT JOIN.
(3) Hvis din sidste paragraf i #3 er det du vil have, altsaa Navn, Beskrivelse, Points_idag, Points_igaar, saa skal din SELECT string ikke indeholde Point.Datoen og behoever ikke baade Point.Navn og Medlem.Navn.
Jeg har for test lavet to tabeller:
CREATE TABLE jimmydk_point(ID INT, Navn VARCHAR(10), Points INT, Datoen DATE);
CREATE TABLE jimmydk_medlem(ID INT, Navn VARCHAR(10), Beskrivelse VARCHAR(10));
I de tabeller har jeg indfoert nogle testdata som jeg viser nedenstaaende. Jeg har med vilje gjort det saadan at ikke alle medlemmer har points de sidste to dage.
Ved at bruge ovenstaaende query paa disse testdata i disse tabeller faar jeg dette resultat:
producerer dette resultat:
Navn Beskrivelse Points_idag Points_igaar
Palle Master 7 NULL
Per Medlem 23 NULL
Pernille Master 5 28
Peter Medlem NULL NULL
Poul Master 9 2
Putte Medlem NULL 12
I mine testdata er det kun Pernille og Poul der har points baade idag og igaar. Palle og Per har points idag men ikke igaar. Putte har points igaar men ikke idag. Og Peter har hverken points idag eller igaar. Min query giver saaledes, som jeg har forstaaet, det resultat du er ude efter.
Jeg tillader mig at oprette dette indlaeg som et svar idet jeg mener at have besvaret dit spoergsmaal. Hvis der er problemer kan jeg foerst reagere paa tirsdag fordi jeg nu tager til udlandet (det er Danmark, jeg bor i Belgien) et par dage.
Her er mine testdata:
INSERT INTO jimmydk_medlem VALUES(1, 'Poul', 'Master');
INSERT INTO jimmydk_medlem VALUES(2, 'Per', 'Medlem');
INSERT INTO jimmydk_medlem VALUES(3, 'Palle', 'Mister');
INSERT INTO jimmydk_medlem VALUES(4, 'Pernille', 'Muffe');
INSERT INTO jimmydk_medlem VALUES(5, 'Peter', 'Mand');
INSERT INTO jimmydk_medlem VALUES(6, 'Putte', 'Matrone');
INSERT INTO jimmydk_point VALUES(1, 'Poul', 25, '2010-06-01');
INSERT INTO jimmydk_point VALUES(2, 'Poul', 2, '2010-06-9');
INSERT INTO jimmydk_point VALUES(3, 'Poul', 9, '2010-06-10');
INSERT INTO jimmydk_point VALUES(4, 'Poul', 16, '2010-06-5');
INSERT INTO jimmydk_point VALUES(5, 'Per', 23, '2010-06-10');
INSERT INTO jimmydk_point VALUES(6, 'Palle', 30, '2010-06-7');
INSERT INTO jimmydk_point VALUES(7, 'Palle', 7, '2010-06-10');
INSERT INTO jimmydk_point VALUES(8, 'Pernille', 14, '2010-06-7');
INSERT INTO jimmydk_point VALUES(9, 'Pernille', 21, '2010-06-8');
INSERT INTO jimmydk_point VALUES(10, 'Pernille', 28, '2010-06-9');
INSERT INTO jimmydk_point VALUES(11, 'Pernille', 5, '2010-06-10');
INSERT INTO jimmydk_point VALUES(12, 'Putte', 12, '2010-06-9');
INSERT INTO jimmydk_point VALUES(13, 'Putte', 19, '2010-06-8');
INSERT INTO jimmydk_point VALUES(14, 'Putte', 26, '2010-06-3');
INSERT INTO jimmydk_point VALUES(15, 'Putte', 3, '2010-06-1');
Jeg tager nu paa ferie et par dage, jeg er tilbage paa tirsdag hvis der er mere at goere paa dette spoergsmaal.