Jag behöver köra delete ur en tabell. Borde fungera såhär. Dock inte vidare effektivt då det kräver en fråga för varje post i A. Har tyvärr inte tid att fundera vidare på det nu... Njae... det där genererar fel, men tack ändå! Hur har du designat databasen om du måste radera rader i en tabell för att göra den identisk med en annan? Server: Msg 170, Level 15, State 1, Line 1 Det är samma princip som min fast du har använt exists istället. Fungerar det? I sådana fall är det väl bara att köra! :) Japp! Den verkar fungera alldeles utmrärkt. Hjälp med lite SQL tack
Förutsättningar: Jag vill ta bort de poster (x och y) ut tabell a som inte finns med i tabbel b. Det vill säga. Ta bort x och y ur a för de om det inte finns motsvarande i b.
Jag började med att göra en select som skall. Jag kom fram till hur jag tar ut de som lika.
SELECT A.X, A.Y
FROM A
INNER JOIN B
ON A.X = B.X and A.Y = B.Y
Det där visar alltså de värden (x och y) som finns i båda tabellerna. Men nu vill jag ta fram de i a som inte finns i b för at slutligen även göra som den till en delete.
Hjälp någon?Sv: Hjälp med lite SQL tack
DELETE FROM A WHERE (SELECT COUNT(0) FROM B WHERE X=A.X AND Y = A.Y) = 0
/JohanSv:Hjälp med lite SQL tack
Jag funderar vidare och ser samtidigt fram emot fler förslag :-)Sv: Hjälp med lite SQL tack
Men en snabb lösning skulle kunna vara
<code>
DELETE FROM a WHERE (SELECT COUNT(0) FROM b WHERE b.x = a.x AND b.y = a.y) = 0
</code>
Dock är den troligen inte så hemskt optimal.Sv:Hjälp med lite SQL tack
Line 1: Incorrect syntax near 'a'.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '='.
Har provat vidare lite och kommit fram till följande. Vad sägs?
Delete FROM A
WHERE NOT EXISTS
(SELECT X, Y FROM B
WHERE A.X = B.X
AND A.Y = B.Y)
/RickardSv: Hjälp med lite SQL tack
/JohanSv:Hjälp med lite SQL tack
Kände mig dock lite osäker och fick köra lite kollar. Den får rulla tills appen når testfasen :D
Tackar för hjälpen!!
/Rickard