webForumDet fria alternativet

Visa endast en post

17 svar · 972 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej!

Har följande kod:

		sSQL = 	"SELECT tblTask.Id, tblTime.Id, tblTask.Task, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status " &_
				"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
				"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-3,now())"

Tanken är att visa var företagets olika montörer befinner sig baserat på de arbetstider de registrerat de tre sista dagarna.

Om Olle arbetat så här:

Måndag 2006-03-10 07:00 - 16:00 Pelles Plåt
Tisdag 2006-03-10 12:30 - 16:00 Pelles plåt

Visas följande i nuläget:

Pelles Plåt
Pelles Plåt

Jag vill att det ska visas så här:

Pelles Plåt

Dvs är en montör på samma uppdrag inom 3-dagarsspannet skall det företaget bara visas en gång!

Hmmm

Någon som fattar... ;)

//Henrik

thojo280Medlem sedan dec. 200461 inlägg
#2

Lägg till ett GROUP-BY uttryck (GROUP BY tblTime.User).

devotionMedlem sedan jan. 20013 582 inlägg
#3

Hej!
Gjorde det men...

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 

[Microsoft][Drivrutin för ODBC Microsoft Access] Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'Id'. 

/frames/mainFrame.asp, rad 66

//Henrik

thojo280Medlem sedan dec. 200461 inlägg
#4

Ta bort några visningsfält....

MeleaMedlem sedan juli 20033 147 inlägg
#5

Borde inte något följande fungera?

SELECT 
   tblTask.Id, 
   tblTime.Id, 
   DISTINCT(tblTask.Task) as Task, 
   tblTask.CustomerName, 
   tblTime.StartDate, 
   tblTime.StopDate, 
   tblTime.User, 
   tblTask.Status
FROM 
   tblTask 
INNER JOIN
   tblTime ON tblTask.Id = tblTime.TaskId
WHERE
   tblTask.Status = 3 And 
   tbltime.startDate >= dateadd('w',-3,now())
GROUP BY
   tblTask.Id, 
   tblTime.Id, 
   tblTask.CustomerName, 
   tblTime.StartDate, 
   tblTime.StopDate, 
   tblTime.User, 
   tblTask.Status
devotionMedlem sedan jan. 20013 582 inlägg
#6

hmmm.... :(

Provade:

		sSQL = 	"SELECT tblTask.Id, tblTime.taskId, tblTask.Task, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status " &_
				"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
				"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-3,now()) " &_
				"GROUP BY tblTime.User, tblTask.Id, tblTime.Id, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status"

och fick

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 

[Microsoft][Drivrutin för ODBC Microsoft Access] Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'taskId'. 

/frames/mainFrame.asp, rad 66

Vad gör jag för fel?

//Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#7

:)

Provade att lägga samma urval i Order by som det som ligger i SELECT, och det verkar funka!

dvs

		sSQL = 	"SELECT tblTask.Id, tblTime.taskId, tblTask.Task, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status " &_
				"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
				"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-3,now()) " &_
				"GROUP BY tblTask.Id, tblTime.taskId, tblTask.Task, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status"

Är det så man måste göra eller??

//Mvh
Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#8

Hmm, trodde jag fått det att fungera med ovanstående kod...

Men det blir ändå "dubletter" om man varit på samma jobb flera gånger inom intervallet. Vill ju bara ha en träff så att säga..

Någon??

//Henrik

Kent ClarkeMedlem sedan mars 200612 inlägg
#9

Prova med DISTINCT.

Dvs, "SELECT DISTINCT tblTask.Id, tblTime.taskId, tblTask.Task osv"

LarsGMedlem sedan dec. 200012 464 inlägg
#10

Du får alltså samma värden för alla kolumner utom tblTime.StartDate, tblTime.StopDate?

Vilken av dessa poster vill du ha?

devotionMedlem sedan jan. 20013 582 inlägg
#11

Hmm, jag förstår inte riktigt.... :(

Men jag vill ha en fråga som gör det här:
http://www.webforum.nu/showthread.php?p=1171196#post1171196

Mvh
Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#12

Om jag fattat rätt så är det:

tbltime.startDate

Jag vill ha...

Men det är inte säkert jag fattat rätt

//Henrik

LarsGMedlem sedan dec. 200012 464 inlägg
#13

I det exemplet finns det bara en kolumn så det hjälper inte. Visa vilket resultat du får nu och vilket du vill ha.

T.ex. om du får

A B date
--------
1 1 2006-04-23
1 1 2006-04-08

så vill du kanske ha det äldsta datumvärdet för varje kombination av A och B. Det kan bara du tala om.

devotionMedlem sedan jan. 20013 582 inlägg
#14

Hmmmm, då borde det ju räcka med:

sSQL = 	"SELECT tblTask.CustomerName, tblTime.User " &_
				"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
				"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-3,now())"

Eftersom det enda jag vill visa är montör och kund....

//Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#15

LarsG! Är jag på rätt spår?

//Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#16

Hmmm....

Med ovanstående SQL får jag detta resultat:

Thomas - SECURITAS SYSTEM AB  
Thomas - SECURITAS SYSTEM AB  
Thomas - BYGGN.FIRMA Claesson&Andersen HB  
Thomas - BYGGN.FIRMA Claesson&Andersen HB  
Thomas - KARLSKRONA LÅSSERVICE AB  
Thomas - VÄRMEINSTALLATIONER I JÄMJÖ AB  
Per - NVS INSTALLATION AB  
Thomas - JOHN SVENSSON BYGGNADSFIRMA AB  
Thomas - JOHN SVENSSON BYGGNADSFIRMA AB  
Thomas - Lars-Erik Persson  
Jörgen - SECURITAS SYSTEM AB  
Niclas - SECURITAS SYSTEM AB  
Thomas - VÄRMEINSTALLATIONER I JÄMJÖ AB  
Thomas - TAC

Hur gör jag för att inte visa "dubletterna"?

Snälla!!!

//Henrik

@ndersMedlem sedan juni 200032 969 inlägg
#17
SELECT DISTINCT...
devotionMedlem sedan jan. 20013 582 inlägg
#18

Tack @nders! Det verkar ju fungera!

Nu får jag:

Thomas - BYGGN.FIRMA Claesson&Andersen HB  
Thomas - JOHN SVENSSON BYGGNADSFIRMA AB  
Thomas - KARLSKRONA LÅSSERVICE AB  
Thomas - Lars-Erik Persson  
Per - NVS INSTALLATION AB  
Jörgen - SECURITAS SYSTEM AB  
Niclas - SECURITAS SYSTEM AB  
Thomas - SECURITAS SYSTEM AB  
Thomas - TAC  
Thomas - VÄRMEINSTALLATIONER I JÄMJÖ AB

Och det verkar ju vara rätt..

Med följande kod:

		sSQL = 	"SELECT DISTINCT tblTask.CustomerName, tblTime.User " &_
				"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
				"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-4,now())"

Mvh
Henrik

137 ms totalt · 3 externa anrop · v20260731065814-full.b943c234
135 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)