Avatar billede misbruger Nybegynder
02. oktober 2002 - 10:40 Der er 13 kommentarer og
1 løsning

Dato query

Er der ikk' en der kan lave en query på baggrund af disse to tabeller

------------------

log1
log1_index PK
log1_datetime

------------------

log2
log2_index PK
log2_log1_index FK
log2_url

------------------

log2_log1_index er foreing key til log1_index

Jeg skal bruge en query der tæller antalet af log1_index, samt antallet af log2_url, hvor log1_datetime er imellem datofra og datotil (2 variabler af dato format)
Avatar billede terry Ekspert
02. oktober 2002 - 10:45 #1
try making a VIEW in Enterprise Manager. This gives you a visual representation of your tables. Once this is working you have your query!
Avatar billede misbruger Nybegynder
02. oktober 2002 - 11:13 #2
I have done that, but it returns an empty recordset...?
If I try to write out the tables independant of each other, it is very obvious that there's a match, and that the recordset shouldn't be empty.
Avatar billede terry Ekspert
02. oktober 2002 - 11:16 #3
Your date format MUST be either MM-DD-YY or YYYY-MM-DD
Avatar billede misbruger Nybegynder
02. oktober 2002 - 11:23 #4
If I write out the date format that MS SQL uses it's MM/DD/YYYY HH:NN:SS
If I write out the date format on my variables it's MM/DD/YYYY HH:NN:SS
???
Avatar billede misbruger Nybegynder
02. oktober 2002 - 11:26 #5
Avatar billede terry Ekspert
02. oktober 2002 - 12:00 #6
can we see the SQL
Avatar billede misbruger Nybegynder
02. oktober 2002 - 12:37 #7
I have tried.....
------------------
1
SELECT    SUM(log1.log_ip) AS ips
FROM        log1 INNER JOIN
                      log2 ON log1.log1_index = log2.log1_index
WHERE (log1.log1_datetime BETWEEN #30/09/2002# AND #02/10/2002#)
GROUP BY log1.log_ip
------------------
2
SELECT    SUM(log1.log1_count) AS ips
FROM        log1 INNER JOIN
                      log2 ON log1.log1_index = log2.log1_inndex
WHERE (log1.log1_datetime BETWEEN 30/09/2002 AND 02/10/2002)
GROUP BY log1.log1_ip
------------------
3
SELECT    SUM(log1.log1_count) AS ips
FROM        log1 INNER JOIN
                      log2 ON log1.log1_index = log2.log1_inndex
WHERE (log1.log1_datetime BETWEEN #09/30/2002# AND #10/02/2002#)
GROUP BY log1.log1_ip
------------------
4
SELECT    SUM(log1.log1_count) AS ips
FROM        log1 INNER JOIN
                      log2 ON log1.log1_index = log2.log1_inndex
WHERE (log1.log1_datetime BETWEEN 09/30/2002 AND 10/02/2002)
GROUP BY log1.log1_ip
------------------
5
SELECT    SUM(log1.log1_count) AS ips
FROM        log1 INNER JOIN
                      log2 ON log1.log1_index = log2.log1_inndex
WHERE (log1.log1_datetime BETWEEN #09/30/2002 00:00:01# AND #10/02/2002 11:59:59#)
GROUP BY log1.log1_ip
------------------
6
SELECT    SUM(log1.log1_count) AS ips
FROM        log1 INNER JOIN
                      log2 ON log1.log1_index = log2.log1_inndex
WHERE (log1.log1_datetime BETWEEN 09/30/2002 00:00:01 AND 10/02/2002 11:59:59)
GROUP BY log1.log1_ip
------------------
7
SELECT    SUM(log1.log1_count) AS ips
FROM        log1 INNER JOIN
                      log2 ON log1.log1_index = log2.log1_inndex
WHERE (log1.log1_datetime BETWEEN #30/09/2002 00:00:01# AND #02/10/2002 11:59:59#)
GROUP BY log1.log_ip
------------------

Number 2 and 4 returns a empty recordset, and the others fail
Avatar billede terry Ekspert
02. oktober 2002 - 12:39 #8
SELECT    SUM(log1.log1_count) AS ips
FROM        log1 INNER JOIN
                      log2 ON log1.log1_index = log2.log1_inndex
WHERE (log1.log1_datetime BETWEEN '30/09/2002 00:00:00' AND '02/10/2002 23:59:59')
GROUP BY log1.log1_ip
Avatar billede misbruger Nybegynder
02. oktober 2002 - 12:53 #9
The conversion of a char data type to a datatime type resulted in a out-of-range datatime value.

but....

This one almost worked....

SELECT    SUM(log1.log1_ip) AS ips
FROM        log1 INNER JOIN
                      log2 ON log1.log1_index = log2.log1_index
WHERE (log1.log1_datetime BETWEEN '09/30/2002 00:00:00' AND '10/02/2002 23:59:59')
GROUP BY log1.log1_ip

Except it returned ips = 8 (and there's only 1 ipaddress in the tables, so the grouping didn't work)?
Avatar billede terry Ekspert
02. oktober 2002 - 12:58 #10
In ACCESS this would work
BETWEEN #09/30/2002 00:00:00# AND #10/02/2002 23:59:59#
In SQL Server this would work
BETWEEN '09/30/2002 00:00:00' AND '10/02/2002 23:59:59'
I cant see why this deosnt fail!
BETWEEN 09/30/2002 AND 10/02/2002

So try this
BETWEEN 2002-09-30 AND 2002-10-02
Avatar billede misbruger Nybegynder
02. oktober 2002 - 16:06 #11
Well I actually works now.... Thank to you Terry!
Avatar billede terry Ekspert
03. oktober 2002 - 08:12 #12
selv tak :o)
Avatar billede misbruger Nybegynder
03. oktober 2002 - 20:48 #13
Pretty please.... http://www.eksperten.dk/spm/265746
It will properly only take you a second! :)
Avatar billede misbruger Nybegynder
03. oktober 2002 - 21:45 #14
Doesn't matter a found out! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester