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


förekomst i samtliga poster större än 1

Postades av 2007-10-24 23:40:00 - Jesper Alvermark, i forum databaser, Tråden har 9 Kommentarer och lästs av 1274 personer

Hej, sitter och klurar på hur man bäst skriver en fråga som kollar att ett värde förekommer i samtliga rader där data i en kolumn är större än 1.

select distinct fornamn, efternamn
from (serviceatgard join personal
on serviceatgard.tekniker=personal.anstnr)
where tekniker IN (select tekniker
from serviceatgard
where atgard=2)
and tekniker in
(select tekniker
from serviceatgard
where atgard=3)
and tekniker NOT IN
(select tekniker
from serviceatgard
where atgard=1)

Denna funkar men det känns ju inte särskilt smidigt. Om man t.ex har förekomster där atgard är 4,5,6.. etc så blir ju frågan väldigt lång och måste skrivas om för varje ny förekomst. Hur kan man skriva om den till ett enklare uttryck helt enkelt?


Svara

Sv: förekomst i samtliga poster större än 1

Postades av 2007-10-25 08:45:03 - Håkan Borneland

Hej

Med stor risk att jag inte riktigt förstår vad du vill göra/få ut från frågan.
Ett exempel där du får JA om tekniker finns med där data är > 1, annars NEJ.

SELECT DISTINCT 
b.fornamn, 
b.efternamn,
CASE WHEN a.atgard > 1 THEN 'JA' ELSE 'NEJ' END AS [Tekniker finns med]
FROM serviceatgard a
JOIN personal b ON a.tekniker = b.anstnr


Om du bara vill se dom som är med där data är större än 1.
SELECT DISTINCT 
b.fornamn, 
b.efternamn
FROM serviceatgard a
JOIN personal b ON a.tekniker = b.anstnr
WHERE a.atgard > 1


/Håkan


Svara

Sv:förekomst i samtliga poster större än 1

Postades av 2007-10-25 11:08:26 - Jesper Alvermark

Hej, tack för ditt tappra försöka att begripa min förklaring. :-)

Det jag vill åt är nog inte riktigt det du ger som svar. Jag vill hämta ut namn på tekniker endast om denne har utfört åtgärd 2 OCH 3 men INTE 1.
Om jag förstår det rätt så tolkas operatorn > i t.ex "WHERE atgard > 1" som 2 OR 3 (givet att det bara finns tre åtgärder)

Jag måste alltså kontrollera att en viss tekniker förekommer i SAMTLIGA rader där åtgärden INTE är = 1.

Jag vet inte om det blev tydligare men jag hoppas det.


Svara

Sv: förekomst i samtliga poster större än 1

Postades av 2007-10-25 11:12:29 - Niklas Jansson

Det känns som att det mest naturliga är att arbeta med mängdoperationer i detta fallet, union:s och intersection:s.


Svara

Sv: förekomst i samtliga poster större än 1

Postades av 2007-10-25 11:42:04 - Håkan Borneland

Jo det blev tydligare.
Men för att förtydliga ännu mer (för mig iaf):
Du söker efter EN viss tekniker åt gången, eller vill du se ALLA som finns med i samtliga rader?
Om du bara vill se EN, skickar du in ett anställningsnummer eller liknande?
[Övertydliga frågor...]
Om det finns t.ex 5 rader där åtgärden inte är 1, så ska teknikern finnas med i ALLA fem raderna?
Oavstt vad det står på raderna?
Två rader kanske har åtgärd 2, och tre rader åtgärd 3.

/Håkan


Svara

Sv:förekomst i samtliga poster större än 1

Postades av 2007-10-25 12:24:52 - Jesper Alvermark

Hmm, ja det gäller ju att formulera sig tydligt för att få fram rätt resultat. Rörde nog till det lite med raderna där.

Jag söker efter ALLA tekniker som har utfört ALLA åtgärder som INTE är = 1

Om det finns 3 åtgärdskategorier 1,2,3 så vill jag ha fram alla tekniker som har utfört åtgärd 2 OCH 3 men INTE 1.

I ditt exempel med 5 rader så behöver inte teknikern finnas på alla fem raderna men han måste finnas i minst en som har åtgärd = 2 OCH en där åtgärd = 3.


Svara

Sv: förekomst i samtliga poster större än 1

Postades av 2007-10-25 12:43:12 - Håkan Borneland

Mmmm... nu så klarnar bilden. :-)
Ordet SAMTLIGA som du skrev ut, får ju tankarna åt ett håll (ordets makt över tanken).
Återkommer med förslag (efter lunch), om inte någon annan är snabbare, nu när vi vet problematiken.

/Håkan


Svara

Sv: förekomst i samtliga poster större än 1

Postades av 2007-10-25 15:41:36 - Håkan Borneland

Testa det här:

SELECT DISTINCT 
b.fornamn, 
b.efternamn
FROM serviceatgard a
JOIN personal b ON a.tekniker = b.anstnr
WHERE a.atgard > 1
GROUP BY b.fornamn, b.efternamn
HAVING COUNT(DISTINCT a.atgard) = (SELECT COUNT(DISTINCT atgard) 
                                                       FROM serviceatgard WHERE atgard > 1)


/Håkan


Svara

Sv:förekomst i samtliga poster större än 1

Postades av 2007-10-25 21:15:40 - Jesper Alvermark

Tackar så väldigt!

Det verkar funka finfint! Testade med lite olika data i olika scenarion och frågan verkar ge önskat resultat. Det var det jag ville ha, en mer dynamisk fråga.

Bra jobbat!


Svara

Sv: förekomst i samtliga poster större än 1

Postades av 2007-10-25 23:50:27 - Håkan Borneland

Kul att det fungerar.

/Håkan


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

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 570 570
27 958
271 741
5 834
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