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


Knepigt sql-urval [LÖST]

Postades av 2002-05-07 08:28:54 - Benke Nilsson, i forum access, Tråden har 3 Kommentarer och lästs av 954 personer

Hej!
Jag försöker lista 2 tabeller, Beställningslista där unik komb är Personnr och företag samt i Utförd där persnr är unik i komb med bokf_kod

komb personnr o företag i beställningslista skall kunna förekomma i beställningslista men finnas motsvarande matchning i utfört. I utfört finns personen men med annan bokf_kod.

Personen skall även kunna förekomma i utförd-fil men inte i beställningsfil i komb m persnr o bokf_kod.

Normalfallet är att beställningslista personnr företag är = med utfört personnr bokf_kod

Bifogar min sql-fråga.

SELECT Beställningslista.FÖRETAG, Beställningslista.Personnummer, Beställningslista.Namn, Beställningslista.Bruttoavdrag AS [Begärt avdrag], -[BELOPP] AS [Utfört avdrag], -[Begärt avdrag]+[utfört avdrag] AS Diff, UTFÖRT.ANSVAR, UTFÖRT.LART, UTFÖRT.PERIOD
FROM Beställningslista LEFT JOIN UTFÖRT ON (Beställningslista.Personnummer = UTFÖRT.PERSONNR) AND (Beställningslista.FÖRETAG = UTFÖRT.BOKF_KOD)
WHERE (((Beställningslista.FÖRETAG)=[UTFÖRT].[BOKF_KOD]) AND ((UTFÖRT.BOKF_KOD)=1) AND ((Beställningslista.Fombrutto)<=[UTFÖRT].[PERIOD]) AND ((Beställningslista.Tombrutto)>=[UTFÖRT].[PERIOD])) OR (((UTFÖRT.BOKF_KOD)=1) AND ((Beställningslista.Fombrutto)<=[Ange Period]) AND ((Beställningslista.Tombrutto)>=[Ange Period])) OR (((Beställningslista.FÖRETAG)<>[UTFÖRT].[BOKF_KOD]) AND ((UTFÖRT.BOKF_KOD)=1) AND ((Beställningslista.Fombrutto)<=[UTFÖRT].[PERIOD]) AND ((Beställningslista.Tombrutto)>=[UTFÖRT].[PERIOD]))
ORDER BY Beställningslista.Personnummer;

Tack på förhand
/Benke



Svara

Sv: Knepigt sql-urval

Postades av 2002-05-07 12:09:08 - Jonas Gauffin

till att börja med kan du sluta leka med paranteser, din SQL sats var totalt oläslig.

Sen får du referera till namnen i tabellen i dina beskrivningar.

SELECT b.FÖRETAG, b.Personnummer, b.Namn, b.Bruttoavdrag AS [Begärt avdrag], -[BELOPP] AS [Utfört avdrag], -[Begärt avdrag]+[utfört avdrag] AS Diff, u.ANSVAR, u.LART, u.PERIOD
FROM Beställningslista b
LEFT JOIN UTFÖRT u ON (b.Personnummer = u.PERSONNR) AND (b.FÖRETAG = u.BOKF_KOD)
WHERE
(
b.FÖRETAG = u.[BOKF_KOD]
AND u.BOKF_KOD = 1
AND b.Fombrutto <= u.[PERIOD]
AND b.Tombrutto >= u.[PERIOD]
)
OR
(
u.BOKF_KOD = 1
AND b.Fombrutto <= [Ange Period]
AND b.Tombrutto >= [Ange Period]
)
OR
(
b.FÖRETAG <> u.[BOKF_KOD]
AND u.BOKF_KOD = 1
AND b.Fombrutto <= u.[PERIOD]
AND b.Tombrutto >= u.[PERIOD]
)
ORDER BY b.Personnummer;


Vad är fel i SQL satsen och vad vill du åstakomma?


Svara

Sv: Knepigt sql-urval

Postades av 2002-05-07 13:01:13 - Benke Nilsson

Hej Verifier!
Ber om ursäkt att man är novis. Jag försökte att vara så tydlig som möjligt genom att i access hämta den sql-kod som finns i min urvalsfråga.
Hoppades att den enklare beskrev själva frågestrukturen med tabeller o namn. Jag skall försöka bättra mig.

Hur som, vad jag vill uppnå är följande:
Frågan tar fram ett resultat för 1 företag av 10
Detta resultat skall visa:
- samtliga b.personnummer med b.[begärt avdrag] och detta är mindre än,lika med eller större än u.personnr med u.[utfört avdrag]
- samtliga b.personnummer med b.[begärt avdrag] och det ej finns u.[utfört avdrag] för u.personnr
- samtliga b.personnummer som saknar b.[begärt avdrag] men där u.personnr har u.[utfört avdrag]

har försökt att göra detta i olika steg, men jag når aldrig längre än att jag lyckas med att få fram de första 2 svaren
Jag vet att det finns poster där u.personnr har värde i u.[utfört avdrag] men för b.personnummer saknas [begärt avdrag]

Hoppas att jag klarade att förtydliga frågan
/Benke


Svara

Sv: Knepigt sql-urval

Postades av 2002-09-23 11:56:56 - Benke Nilsson

Lösningen fick jag hjälp av Christoffer med. Tusen tack.
Visade sig att det var tvungen att köra en union-fråga, som blev rätt komplex. Finns säkert bättre sätt att skriva den på, men så här får jag den funktion jag vill ha.
*********************
SELECT
Beställningslista.personnummer
, Beställningslista.FÖRETAG
, Beställningslista.namn
, Beställningslista.erbjudande
, Beställningslista.bruttoavdrag as [Begärt avdrag]
, -[BELOPP] AS [Utfört avdrag]
, iif(-[Begärt avdrag]<>null,IIF([utfört avdrag]<>null,-[begärt avdrag]+[utfört avdrag],-[begärt avdrag]),+[utfört avdrag]) AS Diff
, Utfört.ansvar
, Utfört.lart
, UTFÖRT.personnr
, Utfört.period
, utfört.bokf_kod
FROM Beställningslista
INNER JOIN UTFÖRT ON Beställningslista.personnummer =
UTFÖRT.personnr
WHERE
(
(utfört.lart="3001" OR beställningslista.erbjudande=1)
AND
((Beställningslista.Fombrutto<=[Utfört].[Period] AND Beställningslista.Tombrutto>=[Utfört].[Period] OR [Utfört].[period]=[Ange Period])
OR
(Beställningslista.Fombrutto<=[Ange Period] AND Beställningslista.Tombrutto>=[Ange Period]
OR Utfört.period=[Ange period]))
AND
((Beställningslista.FÖRETAG=1 AND (UTFÖRT.BOKF_KOD=1 AND Utfört.ansvar='22300000'))
OR (Beställningslista.FÖRETAG=1 AND UTFÖRT.BOKF_KOD Is Null)
OR (Beställningslista.FÖRETAG Is Null AND (UTFÖRT.BOKF_KOD=1 AND Utfört.ansvar='22300000')))
)
ORDER BY Beställningslista.Personnummer

UNION
SELECT
Beställningslista.personnummer
, Beställningslista.FÖRETAG
, Beställningslista.namn
, Beställningslista.erbjudande
, Beställningslista.bruttoavdrag as [Begärt avdrag]
, -[BELOPP] AS [Utfört avdrag]
, iif(-[Begärt avdrag]<>null,IIF([utfört avdrag]<>null,-[begärt avdrag]+[utfört avdrag],-[begärt avdrag]),+[utfört avdrag]) AS Diff
, Utfört.ansvar
, Utfört.lart
, UTFÖRT.personnr
, Utfört.period
, utfört.bokf_kod
FROM Beställningslista
LEFT JOIN UTFÖRT ON Beställningslista.personnummer =
UTFÖRT.personnr

WHERE
(
(utfört.lart="3001" OR beställningslista.erbjudande=1)
AND
((Beställningslista.Fombrutto<=[Utfört].[Period] AND Beställningslista.Tombrutto>=[Utfört].[Period] OR [Utfört].[period]=[Ange Period])
OR
(Beställningslista.Fombrutto<=[Ange Period] AND Beställningslista.Tombrutto>=[Ange Period]
OR Utfört.period=[Ange period]))
AND
((Beställningslista.FÖRETAG=1 AND (UTFÖRT.BOKF_KOD=1 AND Utfört.ansvar='22300000'))
OR (Beställningslista.FÖRETAG=1 AND UTFÖRT.BOKF_KOD Is Null)
OR (Beställningslista.FÖRETAG Is Null AND (UTFÖRT.BOKF_KOD=1 AND Utfört.ansvar='22300000')))
)
ORDER BY Beställningslista.Personnummer

UNION SELECT
Beställningslista.personnummer
, Beställningslista.FÖRETAG
, Beställningslista.namn
, Beställningslista.erbjudande
, Beställningslista.bruttoavdrag as [Begärt avdrag]
, -[BELOPP] AS [Utfört avdrag]
, iif(-[Begärt avdrag]<>null,IIF([utfört avdrag]<>null,-[begärt avdrag]+[utfört avdrag],-[begärt avdrag]),+[utfört avdrag]) AS Diff
, Utfört.ansvar
, Utfört.lart
, UTFÖRT.personnr
, Utfört.period
, utfört.bokf_kod
FROM Beställningslista
RIGHT JOIN UTFÖRT ON Beställningslista.personnummer =
UTFÖRT.personnr
WHERE
(
(utfört.lart="3001" OR beställningslista.erbjudande=1)
AND
((Beställningslista.Fombrutto<=[Utfört].[Period] AND Beställningslista.Tombrutto>=[Utfört].[Period] OR [Utfört].[period]=[Ange Period])
OR
(Beställningslista.Fombrutto<=[Ange Period] AND Beställningslista.Tombrutto>=[Ange Period]
OR Utfört.period=[Ange period]))
AND
((Beställningslista.FÖRETAG=1 AND (UTFÖRT.BOKF_KOD=1 AND Utfört.ansvar='22300000'))
OR (Beställningslista.FÖRETAG=1 AND UTFÖRT.BOKF_KOD Is Null)
OR (Beställningslista.FÖRETAG Is Null AND (UTFÖRT.BOKF_KOD=1 AND Utfört.ansvar='22300000')))
)
ORDER BY Beställningslista.Personnummer;


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

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 766
27 960
271 761
517
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