Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


if/case i where?

Postades av 2005-11-22 10:49:20 - Johan Krantz, i forum sql-server/msde, Tråden har 2 Kommentarer och lästs av 786 personer

hej

jag har en hyfsat avancerad fråga där jag söker ut ett antal adresser från en tabell baserat på bland annat dessas intressen. en adress kan vara kopplad till flera intressen samtidigt. urvalet gör jag genom att skicka in en xml-sträng i sp'n och helt enkelt hämta ut alla adresser som har de markerade intressena.
här kommer problemet: om man inte kryssat i något intresse i sökfunktionen ska alla hämtas oavsett intressen.
hittills har jag löst det genom att i sp'n ha en if-sats runt hela frågan, alltså:

If (@XmlInterests Is Null)
   Begin
	'Gör sökningen utan xml-frågan
   End
Else
   Begin
	'Gör sökningen MED xml-frågan, typ:
	DECLARE	@XmlHandle1 INT
	EXEC sp_xml_preparedocument @XmlHandle1 OUTPUT, @XmlInterests

	SELECT blabla
	WHERE blabla
		AND Con.ContactID IN (
			SELECT	DISTINCT CI.ContactId
			FROM 	OPENXML (@XmlHandle1, '/ROOT/I', 1)
				WITH
				(
					NIID	integer '.'
				)
				INNER JOIN ContactInterests AS CI
					ON NIID = CI.InterestID
			)

	EXEC sp_xml_removedocument @XmlHandle1                 
   End

fungerar men det är inte snyggt att ha samma fråga två gånger.

tänk nu att jag lägger till en till typ av intressen som kan vara inga/en/många. om jag fortsätter i samma stil så blir det if-satser till 4 olika frågor. det är väl också "ok" men när jag lägger till mitt tredje urval på kategori som funkar likadant så blir if-satsen 9 olika frågor och helt ohållbar...

helst skulle jag vilja göra typ:

SELECT blabla
WHERE blabla
IF not xml1 is null
	BEGIN
		'kör hela xml-grejen:
		AND Con.ContactID IN (blabla)
	END
IF not xml2 is null
...osv


som om det skulle funka... har provat med case också...
Hjäääälp!


Svara

Sv: if/case i where?

Postades av 2005-11-22 13:31:13 - Lars Berg

<code>
SELECT blabla
WHERE blabla
and (@XmlInterests Is Null
or Con.ContactID IN (
SELECT DISTINCT CI.ContactId
FROM OPENXML (@XmlHandle1, '/ROOT/I', 1)
WITH
(
NIID integer '.'
)
INNER JOIN ContactInterests AS CI
ON NIID = CI.InterestID
))
</code>


Svara

Sv: if/case i where?

Postades av 2005-11-23 10:30:24 - Johan Krantz

wow... jag kommer nog aldrig förstå varför det där fungerar för i mitt logiska huvud blir det fel.
men jättetack ska du ha!!! :)


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
497
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies