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


Avancerad SQL-sats..

Postades av 2006-11-23 15:19:06 - jonas Eriksson, i forum databaser, Tråden har 24 Kommentarer och lästs av 2062 personer

Hej jag har två tabeller enligt nedan...

-------------------------
Tabell1
ID | MID
1 | 1
1 | 2
1 | 3

-------------------------

Tabell2
MIDKoppling | IDTyp | Kvantitet
1 | 1 | 4
1 | 2 | 6
2 | 1 | 4
3 | 3 | 5
4 | 1 | 3
4 | 2 | 10

--------------------------

Jag vill nu skapa SQL-satser som skriver ut följande:
MID | IDTyp | Kvantitet
1 | 1 | 4
1 | 2 | 6
1 | 3 | Null
2 | 1 | 4
2 | 2 | Null
2 | 3 | Null
3 | 1 | Null
3 | 2 | Null
3 | 3 | 5

Hur åstadkommer jag detta i sammanhängande SQL-satser? Jag använder SQL Server 2000


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-23 19:05:41 - Andreas Hillqvist

Kan du beskriva din datastruktur?
Vilka fält är primärnycklar, vilka fält är främmande nycklar, osv...


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-23 23:23:49 - Jimmy Thulin

Är inte säker på exakt vad du menar men det kommer iaf bli en left eller right outer join.


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-11-24 10:51:23 - jonas Eriksson

Det finns en relation mellan MID och MIDKoppling det är den enda kopplingen som finns..


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-24 11:24:06 - Johan Djupmarker

Jag har lite svårt att få ihop dina exempeldata med den relationen. Är det tänkt att exakt det innehållet ska ge det utdatat? Du hämtar väl enbart information från "Tabell2"?

/Johan


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-11-24 15:23:50 - jonas Eriksson

Grejen är så här:
Crystal Report är ett rapportgenereringsprogram som hanterar olika subrapporter, dvs. länkade rapporter mellan varandra.

Jag vill i min rapport länka huvudrapporten med en subrapport. Nackdelen är att kopplingen endast visar de poster som är matchade mot varandra och utesluter andra värden som inte finns.( finns inte ex. MID 2 och IDTyp 3, så visas inte denna information men det vill jag)

Jag vill alltså att de värden som inte finns representerade skall visas som Null i subrapporten. För att det skall bli möjligt måste jag koppla upp mig mot en fråga som visar angiven utdata.


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-24 15:31:08 - jonas Eriksson

Egentligen kan man kortfattat säga att: Alla IDTyp som finns skall finnas representerade till alla MIDKoppling oavsett om det finns en koppling eller ej.

Finns det koppling mellan MIDKoppling och IDTyp skrivs kvantitet ut annars skrivs NULL eller 0 ut.

Vidare så finns en parameter inställt på att ID i tabell1 är lika med 1 och att alla MID därefter skall matchas mot MIDKopplingar i tabell2


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-24 17:20:11 - Daniel Forslund

SELECT b.MID, a.MID AS IDTyp, c.Kvantitet
FROM Tabell1 a RIGHT OUTER JOIN
Tabell1 b ON a.ID = b.ID LEFT OUTER JOIN
Tabell2 c ON c.IDTyp = a.MID AND c.MIDKoppling = b.MID

Är det det du vill åstadkomma? :)

Ett tips är att börja använda primärnycklar och skapa referenstabeller istället. Slå ihop tabeller där det inte finns några unika nycklar är att gravt måla in sig i hörn, och blygs inte för att använda bättre namn på dina kolumner så att folk på forumet kan förstå.


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-11-24 17:20:30 - Niklas Jansson

Du beskriver på fel sätt; vad betyder alla dessa ID?
Vad är det för något?


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-11-27 10:53:18 - jonas Eriksson

Får det ej att fungera, värt att notera är att frågan skall hämta
MID från tabell1.MID
IDTyp från tabell2.IDTyp
Kvantitet från tabell2.Kvantitet


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-27 14:28:20 - Niklas Jansson

Du måste förklara tydligare. Det är omöjligt att förstå vad du menar. Ta lite data, visa vilket resultat du ska få, och exakt vilket resultat du får med givna data. Sen kan vi säga hur du ska göra.


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-11-27 15:52:20 - jonas Eriksson

Vi gör ett nytt försök:

Tabell1
Modell | ModellTyp
1 | 1
1 | 2
1 | 3
2 | 4
2 | 6
1 | 7

Tabell2
RefModellTyp | Produkt | Kvantitet
1 | 101 | 12
1 | 102 | 24
2 | 102 | 21
2 | 103 | 44
3 | 102 | 87
3 | 103 | 35
4 | 101 | 12
4 | 103 | 13
6 | 112 | 21
7 | 103 | 22
7 | 112 | 63



Villkor:
Tabell1.Modell = 1
Tabell1.ModellTyp är kopplat till Tabell2.RefModellTyp

Jag vill skriva en fråga som ger följande utslag:

ModellTyp | Produkt | Kvantitet
1 | 101 | 12
1 | 102 | 24
1 | 103 | 0
1 | 112 | 0
2 | 101 | 0
2 | 102 | 21
2 | 103 | 44
2 | 112 | 0
3 | 101 | 0
3 | 102 | 87
3 | 103 | 35
3 | 112 | 0
7 | 101 | 0
7 | 102 | 0
7 | 103 | 22
7 | 112 | 63

Tack på förhand, jag har kört fast..


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-27 18:38:53 - Niklas Jansson

SELECT A.ModellTyp, B.Produkt, B.Kvantitet FROM Tabell1 A LEFT JOIN Tabell2 B ON A.ModellTyp = B.RefModelltyp WHERE A.modell = 1
Kanske?


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-11-28 08:16:34 - jonas Eriksson

Hämtar inga 0-fält utan enbart de som matchar överens..


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-28 14:03:22 - Niklas Jansson

Okej, då har du ju egentligen en annan typ av struktur, du har ytterligare en tabell Produkt.

Något i stil med:
SELECT A.ModellTyp, B.Produkt, B.Kvantitet FROM Tabell1 A LEFT JOIN (Produkt P LEFT JOIN Tabell2 B ON P.id = B.produkt) ON A.ModellTyp = B.RefModelltyp WHERE A.modell = 1


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-11-30 09:07:10 - jonas Eriksson

Jag får tyvärr inte ut det avsedda resultatet.
Jag vill alltså att för varje ModellTyp skall Samtliga Produkter som är kopplade till Modell = 1 visas, oavsettt om de har något värde eller inte..


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-30 11:57:50 - Niklas Jansson

Så din enda koppling mellan produkter och modell är via "Tabell 2"?

Ja, då får du väl göra något i stil med:
SELECT UNIQUE Produkt FROM Tabell2 LEFT JOIN Tabell1 ON tabell2.refmodelltyp = tabell1.modelltyp

För att få fram produkterna, och sen något i stil med:
SELECT Produkt, kvantitet from (Tabell2 LEFT JOIN Tabell1 on Tabell2.refmodelltyp = tabell1.modelltyp) A RIGHT JOIN (SELECT UNIQUE Produkt FROM Tabell2 LEFT JOIN Tabell1 ON tabell2.refmodelltyp = tabell1.modelltyp) B ON A.produkt = B.produkt

Eftersom det är skrivet på frihand så är det nog något fel, men jag hoppas principen framgår.


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-11-30 12:02:06 - Åsa Holmgren

Precis som Nickas skriver så saknar jag en produkttabell... Den här frågan funkar i Access:

SELECT modtp, prodnr, Kvantitet FROM (SELECT Modell, ModellTyp AS modtp, prodnr FROM Tabell1, (SELECT DISTINCT Produkt AS prodnr FROM Tabell2)) AS allprod LEFT JOIN Tabell2 ON (allprod.prodnr = Tabell2.Produkt) AND (allprod.modtp = Tabell2.RefModellTyp) WHERE Modell = 1 ORDER BY modtp;


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-11-30 14:13:19 - jonas Eriksson

Tusen, tusen tack!!!
Nu återstår dock endast en sak att transformera SQL-satsen så den är kompatibel mot SQL Server 2000 med den som fungerar mot Access databasen (Åsas).

Jag vet inte vad det är men jag får inte Nicklas SQL-sats att fungera.. den ger mig heller inga konkreta felmeddelanden..


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-11-30 18:19:37 - Niklas Jansson

Som sagt: den är inte testad öht. Börja med den första för att se om du kan få fram alla relevanta produkter först. Sen kan det vara någon join som går år fel håll, eller parenteser som ska stå i en annan ordning eller dylikt.


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-12-01 09:19:13 - jonas Eriksson

När jag kör frågorna:
SELECT Produkt, kvantitet from (Tabell2 LEFT JOIN Tabell1 on Tabell2.refmodelltyp = tabell1.modelltyp)
Fungerar!

SELECT DISTINCT Produkt FROM Tabell2 LEFT JOIN Tabell1 ON tabell2.refmodelltyp = tabell1.modelltyp
Fungerar!

Men ej ihop för då får jag följande fel:
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'A'.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'B'.


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-12-01 12:26:19 - Niklas Jansson

Kommer inte ihåg exakt hur man döper en subselect, det är nog det som är problemet.


Svara

Sv: Avancerad SQL-sats..

Postades av 2006-12-08 08:35:25 - jonas Eriksson

Hej, får sqlsatsen inte att fungera i SQL server, kan inte komma på vad det kan bero på.

Egentligen så är det viktigaste att den fungerar i Oracle men det har jag inte testat än.. provar på SQL server först..


Svara

Sv:Avancerad SQL-sats..

Postades av 2006-12-08 13:37:09 - Niklas Jansson

Vet inte riktigt hur van programmerare du är, men det här känns ju som en ganska enkel debugging.

Skapa först delsatsen, se till att den definitivt fungerar. Skapa sen den yttre satsen och se till att den funkar med lite manuellt inskrivna värden. Och slå sen ihop dem.


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 613
27 958
271 741
5 841
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