freddykMedlem sedan okt. 2006103 inlägg Hallå SQLare,
Behöver er hjälp med något rätt basic, kan jag tänka. Vill få fram de faser som inte är kopplade till ett visst projekt dvs de faser som inte har en koppling till projekt i tabellen projektFas.
Jag har 3 tabeller. Tabell Projekt (pk projID), tabell Fas (pk fasID) och tabell projektFas (pk projID och fasID).
Jag vill få fram de faser som inte är kopplade till projID.
Följande SQL har jag:
SELECT dbo.malte_projekt_fas.fasID,dbo.malte_projekt_fas.fasNamn,dbo.malte_projekt_fas.fasBeskr,dbo.malte_projekt_fas.fasUnik
FROM dbo.malte_projekt_fas
INNER JOIN dbo.malte_projekt_projektFas ON dbo.malte_projekt_projektFas.projektFasID = dbo.malte_projekt_fas.fasID
WHERE dbo.malte_projekt_fas.fasUnik = 'False' AND dbo.malte_projekt_projektFas.projektID <> @projid
Detta visar de faser som är kopplade till andra projektID även om dessa faser är kopplade till det projektID jag skickar in i @projID. Detta vill jag undvika. Vill endast ha ut de faser som är kopplade till andra projektID och som inte är kopplade till inkommande @projID över huvud taget.
Några förslag på hur jag kan modifiera SQLen?
Tack på förhand.
Använder SQL server 2005.
LarsGMedlem sedan dec. 200012 464 inlägg select *
from fas
where not exists
(select *
from projektfas
where fas.fasid = projektfas.fasid
and projid = @projid)
freddykMedlem sedan okt. 2006103 inlägg Behöver hjälp med ytterligare en NOT EXISTS
Varför får jag inte fram ngt resultat i nedanstående fråga? Frågorna var för sig går bra men ihop blir det nada. Tacksam för hjälp. :)
Nedanstående ska ta fram de anställda som inte finns med i checklistaRadAnstalld med sitt ID och visa dem.
Första select-delen får fram alla anställda den andra de anställda med radID = 1. Fungerar som sagt var för sig men ihop blir det noll. Vill ha fram de anställda som inte kommer fram i andra select-satsen.
SELECT DISTINCT anstID
FROM dbo.malte_grund_anstalld
WHERE (NOT EXISTS
(SELECT DISTINCT anstalldID
FROM dbo.malte_kt_projekt_checklistaRadAnstalld
WHERE (checklistaRadID = '1')))
LarsGMedlem sedan dec. 200012 464 inlägg Du har ingen villkor mellan tabellerna. Om det finns någon i malte_kt_projekt_checklistaRadAnstalld som uppfyller villkoret checklistaRadID = 1
så får du alla poster i malte_grund_anstalld. Att ange distinct i en subfråga är onödigt.
SELECT anstID
FROM dbo.malte_grund_anstalld mga
WHERE NOT EXISTS
(SELECT *
FROM dbo.malte_kt_projekt_checklistaRadAnstalld mpc
WHERE mga.anstID = mpc.anstalldID
and checklistaRadID = 1)
freddykMedlem sedan okt. 2006103 inlägg Det är ju klart! Tack LarsG. Det tiltar ibland (o inte så sällan heller) ;)