Skal du ikke bare joine de 2 tables ... og så:
WHERE statusid = 6 ?
Jeg kan ikke lige genneskue hvorfor du laver den WHERE IN
Hej..
Fordi ProjID går igen flere gange, og jeg skal kun bruge de poste med den nyeste dato(Changeddate). Og den skal kun tag dem der har StatusID lig med 6..
ProjID - Sidste post registret - Men kun hvis StatusID = 6
Lidt svært og forklare.. :-)
hmmm ...
SÅ noget ala:
SELECT * FROM projs WHERE projid IN
(
SELECT MAX(projid) from status WHERE statusid = 6 GROUP BY projid
)
Overstående er utestet ... men burde det så ik' virke ...
Hej..
Virker ikke, jeg får stadig alle poster med StatusID=6, også selv om det ikke er sidste dato (Changeddate)...
Dvs ... du skal have MAX Date ... og den status kode som passer til ?
mvh
Hej..
Jeg skal bruge :
For hver ProjID skal jeg bruge den sidste (nyeste Dato), men KUN hvis StatusID er =6.
Altså, de Projekter(ProjID) der på nuværende tidspunkt(Changeddate) har status 6 (StatusID)....
Tænkt og ikke testet ... pseudo sql
select * from proj P
INNER JOIN ( select projid, MAX(date) from proj GROUP BY projid ) AS t1 ON P.projid = t1.projid AND p.ChangeDate = t1.ChangeDate
WHERE P.Status = 6
Den tmp table:
select projid, MAX(date) from proj GROUP BY projid
Tager senest dato og projid og joiner over på sig selv ... og sammenligner projid og dato ... og så ser om den har status id 6..
Det burde virke ... om end jeg ikke lige helt kan gennemskue din struktur. så burde det her give en ide til hvordan du kan løse det.
mvh
Hej..
Lige et eks...
Tabel 1 : G_Proj
ProjID - Plannededate - Task_name - Descr
EKS:
1 - 13-03-2010 - abc - lave kaffe
2 - 15-03-2010 - cba - male hus
3 - 10-04-2010 - cab - rydde sne
ProjID = Primærnøgle (Ingen dubletter)
Tabel 2 : G_projstatus
FK_Projekt - Changeddate - StatusID
EKS :
2 - 10-03-2010 - 2
2 - 11-03-2010 - 6
2 - 12-03-2010 - 5
1 - 10-03-2010 - 2
1 - 11-03-2010 - 6
1 - 13-03-2010 - 5
3 - 08-03-2010 - 5
3 - 09-04-2010 - 6
Relation:
G_Proj.ProjID - G_Projstatus.FK_Projekt
Resultat skal så være :
3 - 10-04-2010 - cab - rydde sne
Da det er den eneste der opfylder, StatusID=6 ved sidste dato..
ja, men har du prøvet at lave det med udgangs punkt i min tankegang ?
mvh
Problemet er jo at din sidste table ikke har noget unikt ... da du kun har 3 felter ... og det eneste der kan gøre rækken unik er at tage dato med ... så du har id og dato ... som kan vælge staus.
Derfor tror jeg ikke der er mange andre måder at lave det på.
mvh
Hej Buzzzz
Jeg har fundet en løsning der virker :
SELECT G_PROJ.PROJID, G_PROJ.TASK_NAME, G_PROJ.DESCR, G_PROJ.PLANNEDENDDATE
FROM G_PROJ INNER JOIN
G_PROJSTATUS ON G_PROJ.PROJID = G_PROJSTATUS.FK_PROJECT
WHERE ((SELECT TOP (1) STATUSID
FROM G_PROJSTATUS AS G_PROJSTATUS_1
WHERE (G_PROJ.PROJID = FK_PROJECT)
ORDER BY CHANGEDDATE DESC) = 2)
GROUP BY G_PROJ.PROJID, G_PROJ.TASK_NAME, G_PROJ.DESCR, G_PROJ.PLANNEDENDDATE
ORDER BY G_PROJ.PLANNEDENDDATE DESC
Men smid lige svar, så får du pointen.....
Hej,
Yes, dit løser det også ... men det andet burde nu også ...
Men alle veje fører til Rom ... næsten da :-)
mvh