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


Dubbel utsökning

Postades av 2006-01-27 14:05:00 - Peter Hammar, i forum sql-server/msde, Tråden har 6 Kommentarer och lästs av 768 personer

Hej...

Jag har ett litet klurigt problem som någon expert på SQL-utsökningar säkert kan hjälpa mig med. Jag vänder mig hit i hopp om hjälp.

PERSONER
------------
id
namn

KATEGORIER
---------------
id
kategori_namn

PERSONKATEGORIER
------------------------
id
kategori_id
personer_id


En person kan som ni förstår vara med i flera kategorier. Vad jag vill är att få ett RecordSet som innehåller lika många Records som det finns kategorier. Varje Record skulle jag vilja innehöll dels namnet på en kategori samt någon slags flagga om att det person_id som jag skickar in i SP:n eller så är med i just den kategorin.

Ex.
"ASP-hackare", 1
"SQL-nörd", 0
"PHP-latjare", 1
"JSP-surfare", 0
osv...

Om flaggan är en bool eller ngt annat saknar sexuell betydelse. Sortering och sånt tjafs fixar jag också själv men det är just det att få ett RS som innehåller alla kategorinamn samt en flagga för de kategorinamn där ett visst person_id matchar.

Trevlig helg till alla och en var!


Svara

Sv: Dubbel utsökning

Postades av 2006-01-27 14:46:19 - Thomas Vanhaniemi

Hmm, något i stil med följande
<code>
SELECT namn, SUM(hit) AS exists FROM
(SELECT kategorier.kategori_namn AS namn, (personkategorier = #personid#) AS hit FROM kategorier
LEFT OUTER JOIN personkategorier ON personkategorier.kategori_id = kategorier.id) AS tmp
GROUP BY namn
</code>
Om jag inte har klantat mig i tankesättet ska ovanstående först sätta en etta eller nolla beroende på om #personid# existerar (du ersätter detta med en siffra som motsvarar personens id) eller inte. Därefter summeras allting ihop och där ser man antingen en 1 eller 0, beroende på om personen existerar i kategorin eller inte.

Dock, detta räknar egentligen ihop hur många gånger personen finns i varje kategori, men kan denne endast finnas en gång blir det ju bara 0 eller 1 som blir slutresultatet. Vill du vara garanterad att enbart 0 eller 1 ges kan du ersätta SUM med MAX i frågan.


Svara

Sv: Dubbel utsökning

Postades av 2006-01-27 15:00:33 - Ola Lindfeldt

Bättre/snabbare lösning:

SELECT K.kategori_namn,
CASE
WHEN PK.kategori_id IS NULL THEN 0
ELSE 1
END AS medlem
FROM KATEGORIER K
LEFT OUTER JOIN
PERSONKATEGORIER PK
ON K.id = PK.kategori_id AND PK.personer_id = 5



Svara

Sv:Dubbel utsökning

Postades av 2006-01-27 15:05:33 - Thomas Vanhaniemi

Håller med dig Ola, din lösning är bättre och troligtvis snabbare.


Svara

Sv:Dubbel utsökning

Postades av 2006-01-27 15:12:48 - Peter Hammar

Hej Thomas...

Jag förstår hur du har tänkt men jag fick det inte riktigt att rocka. Stort tack dock!

mvh
// Peter


Svara

Sv:Dubbel utsökning

Postades av 2006-01-27 15:14:29 - Peter Hammar

Hej Ola...

Den här lösningen var helt underbar! Det fungerar givetvis klockrent, precis som jag vill. Dessutom är det en riktigt stilig lösning... :)

mvh
// Peter


Svara

Sv: Dubbel utsökning

Postades av 2006-01-27 17:01:53 - Ola Lindfeldt

Gött =)
Trevlig helg!


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
481
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