webForumDet fria alternativet

I en select-sats, hur tar man reda på om raden har en child record (som boolean)?

Databaser & SQL

2 svar · 436 visningar · startad av haxx

Medlem sedan maj 200654 inlägg
Frågan#1

Hej,

Just som rubriken låter, hur tar man reda på om huvudraden har "child"-rader?

Så här ser min kod ut just nu:

SELECT AttributeID, ProductID, Volym, Price, Stock, Image
FROM Attribute
WHERE AttributeID = @AttributeID

Och det här är koden som jag hoppades skulle funka:

SELECT a.AttributeID, a.ProduktID, a.Volym, a.Price, a.Stock, a.Image,
(IF EXISTS (SELECT av.AttributeID From AttributeValue av WHERE av.AttributeID = a.AttributeID)	
	BEGIN
		PRINT 'True'
	END
ELSE
	BEGIN
		PRINT 'False'
	END) AS Child
FROM Attribute a
WHERE AttributeID = @AttributeID

Men det fungerar ju inte... så hur gör man?

Medlem sedan juni 20003 076 inlägg
#2

Det skiljer kanske på DB men i ms sql kan man använda case

SELECT a.AttributeID, a.ProduktID, a.Volym, a.Price, a.Stock, a.Image,
     (CASE WHEN EXISTS (
          SELECT av.AttributeID From AttributeValue av WHERE av.AttributeID = a.AttributeID) 
     THEN 1 ELSE 0 END) AS Child
FROM Attribute a
WHERE AttributeID = @AttributeID

Det var länge sedan jag skrev ren sql men nått åt det hållet! :)

Medlem sedan maj 200654 inlägg
#3

Man tackar! :D

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)