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


Länka 3 tabeller

Postades av 2015-05-19 17:15:26 - Lars Lantz, i forum mysq, Tråden har 7 Kommentarer och lästs av 2768 personer

Hej!

Jag har 3 tabeller med följande innehåll.
tblnormaler (idNummer)
tblprotokoll (pIdNummer, protokollNummer)
tblkalibrering (kProtokollNummer, kalibreringsdatum)

När ett instrument (idNummer) kalibreras skapas ett protokollnummer som i sin tur skapar ett kalibreringsdatum.

Jag vill med en sql-sats lista ALLA instrument tillsammans med det senaste kalibreringsdatumet.
Så här har jag gjort:

SELECT * FROM tblnormaler LEFT JOIN 
(SELECT * FROM tblprotokoll INNER JOIN tblkalibrering ON tblkalibrering.kProtokollNummer=tblprotokoll.protokollNummer)
tblprotokoll ON tblprotokoll.pIdNummer=tblnormaler.idNummer
ORDER BY tblnormaler.idNummer ASC

Det som händer är att bara de instrument som har ett kalibreringsdatum visas. Tanken var att alla instrument ska visas i listan.
Om de har ett datum så ska det visas annars ska det vara tomt.
Dessutom är det endast det senaste datumet som ska visas. Jag behöver hjälp med detta.

Tack på förhand
Lars Lantz


Svara

Sv: Länka 3 tabeller

Postades av 2015-05-20 08:31:37 - Tomas Granlund

Left (right) outer join kommer, till skillnad från inner join, ta med även de fall då en rad saknas i det högra (vänstra) uttrycket.

SELECT n.idNummer, senastekalibrering.SenasteKalibreringsdatum
FROM tblNormaler n
LEFT OUTER JOIN (
	SELECT MAX(k.kalibreringsdatum) AS SenasteKalibreringsdatum, p.pIdNummer
	FROM tblkalibrering k
	INNER JOIN tblprotokoll p ON k.kProtokollNummer = p.protokollNummer
	GROUP BY p.pIdNummer
) AS senastekalibrering ON n.idNummer = senastekalibrering.pIdNummer


Svara

Sv:Länka 3 tabeller

Postades av 2015-05-21 11:32:20 - Lars Lantz

Hej Tomas!

Tack för hjälpen, funkar perfekt!

Hur ska jag göra för att få ut fler fält från tblkalibrering?

SELECT *, senastekalibrering.* 
FROM tblnormaler n LEFT OUTER JOIN (
     SELECT MAX(k.kalibreringsdatum) AS SenasteKalibreringsdatum, p.pIdNummer, k.egen, k.enp, k.ext 
     FROM tblkalibrering k 
     INNER JOIN tblprotokoll p ON k.kProtokollNummer = p.protokollNummer 
     GROUP BY p.pIdNummer
) AS senastekalibrering ON n.idNummer = senastekalibrering.pIdNummer 
ORDER BY n.idNummer ASC


Som du kan se så har jag lagt till k.egen, k.enp, k.ext. Problemet är att dessa värden tillhör inte raden med det senaste datumet.

/Lars


Svara

Sv: Länka 3 tabeller

Postades av 2015-05-21 12:02:41 - Tomas Granlund

Vilken rad tillhör de i så fall? Kan det vara nåt suspekt med datamodellen i och med att de inte tillhör den senaste raden?


Svara

Sv:Länka 3 tabeller

Postades av 2015-05-21 12:14:15 - Lars Lantz

Hej igen Tomas!

Tack för att du tar dig tid med mitt problem. Jag har emellertid kommit på att förra frågeställningen inte räcker till.
Det jag behöver ha ut ur databasen är det senaste kalibreringsdatumet som innan fast ett datum på alla som har k.egen=1
och ett datum på alla som har k.enp=1 och ett datum på alla som har k.ext=1.

Tacksam för all hjälp
Med vänliga hälsningar

/Lars


Svara

Sv: Länka 3 tabeller

Postades av 2015-05-22 10:00:29 - Tomas Granlund

Vet inte om jag tolkar dig rätt :)
Jag tolkar det som att du vill lista en rad per pryl, samt dess senaste datum för Egen kalibrering, senaste datum för Enp-kalibrering och senaste datum för Ext-kalibrering?


SELECT 
n.idNummer, 
senastekalibrering.SenasteKalibreringsdatumEgen, 
senastekalibrering.SenasteKalibreringsdatumEnp, 
senastekalibrering.SenasteKalibreringsdatumExt
FROM tblNormaler n
LEFT OUTER JOIN (
	SELECT 
		p.pIdNummer,
		MAX(CASE WHEN k.egen = 1 THEN k.kalibreringsdatum ELSE NULL end) AS SenasteKalibreringsdatumEgen,
		MAX(CASE WHEN k.enp = 1 THEN k.kalibreringsdatum ELSE NULL end) AS SenasteKalibreringsdatumEnp,
		MAX(CASE WHEN k.ext = 1 THEN k.kalibreringsdatum ELSE NULL end) AS SenasteKalibreringsdatumExt
	FROM tblkalibrering k
	INNER JOIN tblprotokoll p ON k.kProtokollNummer = p.protokollNummer
	GROUP BY p.pIdNummer
) AS senastekalibrering ON n.idnummer = senastekalibrering.pIdnummer


Svara

Sv:Länka 3 tabeller

Postades av 2015-05-22 11:18:14 - Lars Lantz

Hej igen och stort tack!

Det är ju ganska logiskt när man ser din lösning.
Detta är exakt som jag menade.

Vet du om det finns något program där man grafiskt gör det man vill med databasen och som sedan skapar sql-koden.
Jag vet att det i access finns ett frågeverktyg som skapar sql-kod.
Du vet kanske något fristående program.

Med vänliga hälsningar
Lars Lantz


Svara

Sv: Länka 3 tabeller

Postades av 2015-05-26 09:08:00 - Tomas Granlund

Hmm, känner inte till något sådant program på rak arm. Det finns ju en Query Designer i SQL Server Management Studio som jag tror liknar den i Access, men jag har ärligt talat aldrig använt den. Tycker det är svårt att få ordning på lite mer bökiga joins och sånt :)


Svara

Nyligen

  • 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
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

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 153
27 952
271 704
1 087
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