Vinnaren i pepparkakshustävlingen!
2018-05-04, 23:59
  #1
Medlem
God afton!

Jag har en SQL-fråga som jag upplever som lite klurig och tänkte kolla om någon kan hjälpa mig.

Jag har 3 kolumner, en med identitet, vi kan säga att det är från A till H, en med händelser, vi kan säga 1 till 8, och ett med datum.

Det här är det kluriga. De flesta identiteten är kopplade till en händelse, exempelvis A är kopplad till händelse 2. Vissa av identiteterna kan dock innehålla fler händelser. För dessa händelser ska jag skapa en flagga.

Så om exempelvis identiteter A har två händelser, 4 och 5, så ska datumet styra flaggan. Om 4 har inträffat innan 5 så ska flaggan vara ”Ja”. Om 4 inträffar efter 5 så ska flaggan vara ”Nej”.

Har ni några tips på hur jag ska gå tillväga?
Citera
2018-05-05, 01:21
  #2
Medlem
hasenfrasens avatar
Beskriv problemet med hjälp av papper och penna, sen realiserar du det med fysiska papperslappar. Har du ingen möjlig lösning i åtanke är det väldigt svårt att göra ett program för det. Börja med det mest uppenbara, vad vill man åstadkomma och varför. En ensam tabell och ett sql-script blir väldigt ineffektivt med stora databaser. Fundera på att skapa fler tabeller som kopplar ihop sakers ting samt indexering.

Det här låter nästan lite som en skoluppgift. Vill du ha hjälp på traven är StackOverflow det bästa forat - där finns hopers lösningsförslag på allehanda ting. Det är väldigt få saker som är nya under solen som inte har diskuterats där tidigare.
Citera
2018-05-05, 09:33
  #3
Medlem
fnirps avatar
Citat:
Ursprungligen postat av Perfecthairline
God afton!

Jag har en SQL-fråga som jag upplever som lite klurig och tänkte kolla om någon kan hjälpa mig.

Jag har 3 kolumner, en med identitet, vi kan säga att det är från A till H, en med händelser, vi kan säga 1 till 8, och ett med datum.

Det här är det kluriga. De flesta identiteten är kopplade till en händelse, exempelvis A är kopplad till händelse 2. Vissa av identiteterna kan dock innehålla fler händelser. För dessa händelser ska jag skapa en flagga.

Så om exempelvis identiteter A har två händelser, 4 och 5, så ska datumet styra flaggan. Om 4 har inträffat innan 5 så ska flaggan vara ”Ja”. Om 4 inträffar efter 5 så ska flaggan vara ”Nej”.

Har ni några tips på hur jag ska gå tillväga?

Du skriver SQL... Men vilken databasmotor? I SQL Server skulle jag förmodligen använda mig av en ranking function som man wrappar i en case-sats för att lösa det där (Sök på "t-sql ROW_NUMBER() OVER" så hittar du exempel). Men eftersom en ranking function bara funkar i select-delen och du vill använda resultatet från frågan, skulle jag lägga in hela frågan i en cte och presentera ett resultat därifrån. Alternativt att du kör en temptabell istället för cte.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback