webForumDet fria alternativet

Not null-fråga

2 svar · 397 visningar · startad av tanten

tantenMedlem sedan nov. 20051 658 inlägg
#1

Jag får ut de hästar som varit ur träning men kommit tillbaka med denna fråga, vilket inte är meningen.

SELECT h.stcid, h.namn, h.smeknamn, h.kon, h.fodd, year( now( ) ) - year( fodd ) AS foddt
FROM hest h
INNER JOIN stallad AS s ON ( h.stallID = s.stallID ) 
WHERE s.ur_treningDatum IS NOT NULL 
GROUP BY foddt, namn

exempel på hur tabellen ser ut.
(2, '2002-04-12', '2003-03-15'),
(2, '2003-09-03', NULL)

Kan man göra så den bara tar med den sista av samma stallID, så att denna häst inte kommer med?

anv. MySql

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Visa exempel på datainnehåll i båda tabellerna. Visa förväntat resultat.

tantenMedlem sedan nov. 20051 658 inlägg
#3

Tabellen hest innehåller all "statisk" data som namn, födelse och föräldrar och liknande + ett stallID som hämtas i alla de andra tabellerna.
I det fallet som jag visade stallID 2
På "huvudsidorna" på siten presenteras de hästar som är i träning och då fungerar frågan ovan med
WHERE s.ur_treningDatum IS NULL
Men nu skulle vi göra en kort presentation på hästar som inte längre finns med i träning och då kommer de som varit ur en eller flera gånger men som finns i stallet med också.
Så denna häst med stallId 2 kommer med både på träningssidan och utrträningssidan.
Så det förväntade resultatet är att den inte ska komma med.

Kan lösningen ligga i att jag ändrar tabellen?

stallad` (
  `stallID` int(11) NOT NULL default '0',
  `ankomstDatum` date NOT NULL default '0000-00-00',
  `ur_treningDatum` date default NULL,
  PRIMARY KEY  (`stallID`,`ankomstDatum`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb