Hej! Vore det inte enkalre att dela upp fältet "körningsnummer" i tre delar? Bryt upp till två fält: Användare eller användar id i ett fält och Datum tid i ett fält. Så slipper du problem. Ja, det är nog det ända man kan göra! Smidigt är att designa det rätt från början, så som föreslagits här.Hjälp med jobbig SQL fråga...
Har lite problem med en SQL fråga! <BR>
En användare söker efter ett Mätningsnummer, gör det genom att ange datum när mätningen kan ha ägt rum....
<BR>
Jag har en tabell(min 3:e, se nedan) där jag har en kolumn som heter Körningsnummer.<BR>
I detta fält sparas poster med namn som: NamnDatum_Klockslag som blir så här:<BR>
Kalle20021015_133256. Nisse20021017_142637 osv
<BR>
Jag vill nu göra en sökning baserat på ett start och slutdatum som användaren anger.<BR>
Vill då söka av kolumnen Körningsnummer efter ett matchande Datum som finns i strängen, <BR>
sökningen ska returnera alla matchande Matningsnummer som ligger mellan de datum jag angivit....
<BR>
Detta är svårförklarat...<BR>
Jag har i min databas 4 tabeller som är i relation och är normaliserade.
En tabell Kund som har en PK Kundnummer, denna är "länkad" med
2:a Tabellen Miljo och har FK Kundnummer och PK Matningsnummer som "länkas" ihop med<BR>
3:e Tabellen Matvarden och har FK Matningsnummer och PK Körningsnummer<BR>
Användaren anger startdatum: 20021015 och slutdatum : 20021017<BR>
Jag har försökt göra såhär. Problemet är ju när jag ska specificera sökningen
efter Datum som Kolumnen Körningsnummer innehåller.<BR>
Hur gör man med LIKE i detta fall??
Körningsnummer är ett Varchar(50)
<code>
Visa ="SELECT k.Foretag, k.Avdelning, k.KundNummer, m.AllmanBeskrivning, m.Matningsnummer " & vbCrLf & _
"FROM TAB_Kund k INNER JOIN TAB_Miljo m" & vbCrLf & _
"ON k.KundNummer = m.KundNummer" & vbCrLf & _
"INNER JOIN TAB_Matvarden mat" & vbCrLf & _
"ON mat.Matningsnummer = m.Matningsnummer" & vbCrLf & _
"WHERE mat.Korningsnummer BETWEEN LIKE '% " & Trim(startdatum) & "%' AND LIKE '% " & Trim(slutdatum) & "%'" & vbCrLf & _
"ORDER BY m.MatningsNummer"
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic
MyArray = RecSet.GetRows()
</code>
Tacksam för förslag!!Sv: Hjälp med jobbig SQL fråga...
Behöver du få de tre fälten isig unika så kan du ju göra en sammansatt primärnyckel.
Du får ju mycket enklare SQL-frågor.Sv: Hjälp med jobbig SQL fråga...
Sv: Hjälp med jobbig SQL fråga...
Ville bara kolla om det kanske fanns något smidigt!
TackSv: Hjälp med jobbig SQL fråga...
Om du ändå ska lösa det med befintlig struktur så kan du göra något i stil med nedanstående (förutsätter att du vet användarnamnet som eftersöks):
SELECT ... FROM ...
WHERE CAST(REPLACE(kolumn,@username,'') AS DATETIME) BETWEEN @startdate AND @enddate