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


SQL: Senaste datumet?

Postades av 2002-10-31 13:37:18 - Magnus Åhlin, i forum databaser, Tråden har 11 Kommentarer och lästs av 1454 personer

Skulle behöva lite hjälp med SQL.

Två tabeller:

Personer
---------------
ID | Namn


Projekt
------------
ID | Datum | PersonFKID (=id för den person som ansvarade för projektet)


Nu vill jag ställa en fråga som listar alla personers namn samt det senaste projektet de ansvarade för. Hur ser den frågan ut?


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-10-31 13:55:21 - Andreas Hillqvist

SELECT Personer.ID, Personer.Namn, (SELECT TOP 1 Projekt.ID
FROM Projekt
WHERE Projekt.PersonFKID = Personer.ID
ORDER BY Projekt.Datum DESC) As LastProject
FROM Personer


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-10-31 14:20:12 - Magnus Åhlin

Tackar, men är det inte möjligt att skapa lite effektivare SQL som inte ställer så många frågor?

Rättelse: Det var Alla personers namn + datumet för deras senaste projekt jag ville ha.

Nuvarande sql:
SELECT Personer.Namn, Projekt.Datum
FROM Personer INNER JOIN Projekt ON Personer.ID = Projekt.PersonFKID;

Denna listar ju alla projekt med dess personer, hur skulle det se ut om man modifierade denna för att få önskat resultat?

Tackar för hjälpen
mvh Magnus


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-10-31 14:30:00 - Johan Djupmarker

Detta borde ge det:

SELECT Personer.Namn, MAX(Projekt.Datum)
FROM Personer INNER JOIN Projekt ON Personer.ID = Projekt.PersonFKID
GROUP BY Person.ID, Person.Namn


Vill du även ha med de personer som inte har haft något projekt gör du såhär:
SELECT Personer.Namn, MAX(Projekt.Datum)
FROM Personer LEFT JOIN Projekt ON Personer.ID = Projekt.PersonFKID
GROUP BY Person.ID, Person.Namn

/Johan


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-10-31 14:31:53 - Andreas Hillqvist

SELECT Personer.Namn, MAX(Projekt.Datum) As LastDate
FROM Personer LEFT JOIN Projekt ON Personer.ID = Projekt.PersonFKID
GROUP BY Personer.Namn

Om det förekommer personer med samma namn:

SELECT Personer.ID, Personer.Namn, MAX(Projekt.Datum) As LastDate
FROM Personer LEFT JOIN Projekt ON Personer.ID = Projekt.PersonFKID
GROUP BY Personer.Namn, Personer.ID


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-11-11 14:07:47 - Magnus Åhlin

Hej igen!

om jag nu använder följande sql:

SELECT Personer.Namn, MAX(Projekt.Datum) As LastDate
FROM Personer LEFT JOIN Projekt ON Personer.ID = Projekt.PersonFKID
GROUP BY Personer.Namn

och dessutom vill ha med ett annat fält från projekt-tabellen, låt oss säga att varje projekt har ett namn dessutom så vill jag även ha med namnet på det senaste projektet. Hur göra?

mvh Magnus


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-11-11 14:23:23 - Johan Djupmarker

Såhär kanske...

<code>
SELECT Personer.Namn, Projekt.Datum, Projekt.Namn
FROM Personer LEFT JOIN Projekt ON Personer.ID = Projekt.PersonFKID
WHERE Projekt.DAtum IN (
SELECT MAX(Projekt.Datum) As LastDate
FROM Personer LEFT JOIN Projekt ON Personer.ID = Projekt.PersonFKID
GROUP BY Personer.Namn
)
</code>

/Johan


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-11-11 14:29:39 - Magnus Åhlin

ok, tack.
Men håller den verkligen? Om flera projekt har samma datum ?
Menar bara: är det inte farligt att identifiera projektet med datum där på slutet?


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-11-11 15:48:09 - Johan Djupmarker

Helt riktigt, jag slutade nog tänka där på slutet...;)

Såhär testar vi istället då, det känns som att det borde gå att göra på något bättre sätt, men jag kommer inte på det nu bara...

<code>
SELECT Personer.Namn, Projekt.Datum, Projekt.Namn
FROM Personer LEFT JOIN Projekt ON Personer.ID = Projekt.PersonFKID
WHERE Projekt.ID IN (
SELECT (
SELECT TOP 1 ID
FROM Projekt B
WHERE B.PersonFKID = A.PersonFKID
ORDER BY Datum DESC
)
FROM Projekt A
GROUP BY PersonFKID
)
</code>

/Johan


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-11-12 11:21:06 - Andreas Hillqvist

Du sparar ned frågan/vy'n:

qryPersonerLastProject
SELECT Personer.*, (SELECT TOP 1 Projekt.ID
FROM Projekt
WHERE Projekt.PersonFKID = Personer.ID
ORDER BY Projekt.Datum DESC) As LastProject
FROM Personer

Använd sedan frågan i en annan fråga:

SELECT qryPersonerLastProject.*, Projekt.Namn, Projekt.Datum
FROM qryPersonerLastProject LEFT JOIN
Projekt ON qryPersonerLastProject.LastProject = Projekt.ID


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-12-12 14:07:15 - Magnus Åhlin

Hej och tack!

Jag använde det sistnämna alternativet vilket fungerar bra.
Dock blir det problem när det finns fler rader med det senaste datumet.
Då får jag felmeddelandet att underfrågan inte kan returnera flera rader.
Hur löser jag detta?

mvh Magnus


Svara

Sv: SQL: Senaste datumet?

Postades av 2002-12-12 15:08:31 - Andreas Hillqvist

Lägg till räknaren i ORDER BY:

qryPersonerLastProject
SELECT Personer.*, (SELECT TOP 1 Projekt.ID
FROM Projekt
WHERE Projekt.PersonFKID = Personer.ID
ORDER BY Projekt.Datum DESC, Projekt.ID) As LastProject
FROM Personer

På så sätt blir posterna unika.


Svara

Nyligen

  • 17:03 Getmancar your go-to carsharing
  • 14:07 Games
  • 17:54 Vegastars New Zealand
  • 16:56 Verde Casino Danmark
  • 13:54 Vegastars: Top Australian Online C
  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI

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 985
27 965
271 785
747
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