Avatar billede sp Nybegynder
02. juni 2003 - 11:16 Der er 18 kommentarer og
1 løsning

Hvis der er flere afdelinger i samme by, tag så kun en af dem.

Denne SQL vil jeg gerne udbygge så hvis der er flere afdelinger sections i samme by så tager den kun en af afdelingerne.
Min database består b.l.a. af feltet section som er forskellig. F.eks. har jeg 3 afdelinger i samme by (Århus Uni, Århus Nord og Århus Syd). De har også et felt som hedder City. Det felt er ens for de 3 afdelinger. Der står Århus i alle tre.

SQL = "SELECT t1.* FROM Arranger t1 WHERE t1.StartTime<>'no' AND t1.active=1 AND t1.StartTime = (SELECT Min(StartTime) FROM Arranger WHERE Section=t1.Section AND StartTime>='" & Timenow & "') ORDER BY Section DESC;"
Avatar billede mugs Novice
02. juni 2003 - 14:39 #1
SQL er ikke lige mig, men jeg mener at kunne huske fra tidligere spørgsmål:

SELECT DISTÌNCT
Avatar billede sp Nybegynder
02. juni 2003 - 15:42 #2
Virker ikke
Avatar billede zapzap Nybegynder
03. juni 2003 - 10:11 #3
Er det nok for dig at joine på city istedet for section?:
WHERE Section=t1.Section -> WHERE City=t1.City
Avatar billede zapzap Nybegynder
03. juni 2003 - 10:12 #4
Din select min() er nok farlig når du bruger den både som text (din 'no' værdi) og som dato.
Avatar billede sp Nybegynder
03. juni 2003 - 10:47 #5
Nej det virker heller ikke...
Avatar billede sp Nybegynder
03. juni 2003 - 10:49 #6
Dato er også i text-format.
Avatar billede zapzap Nybegynder
03. juni 2003 - 11:21 #7
Prøvede det ellers. Kan du dumpe lidt data, eller sige hvad der ikke virker?
Avatar billede sp Nybegynder
03. juni 2003 - 12:27 #8
SQL = "SELECT t1.* FROM Arranger t1 WHERE t1.StartTime<>'no' AND t1.active=1 AND t1.StartTime = (SELECT Min(StartTime) FROM Arranger WHERE Section=t1.Section AND StartTime>='" & Timenow & "') ORDER BY Section DESC;"

Den virker helt fint, men problemet er bare at den viser alle afdelinger også selvom der er flere afdelinger/sections i en by.

Hvis jeg skriver "City" istedet:

SQL = "SELECT t1.* FROM Arranger t1 WHERE t1.StartTime<>'no' AND t1.active=1 AND t1.StartTime = (SELECT Min(StartTime) FROM Arranger WHERE City=t1.City AND StartTime>='" & Timenow & "') ORDER BY Section DESC;"

Viser den nøjagtig det samme. Der er ingen forskel.
Avatar billede zapzap Nybegynder
03. juni 2003 - 12:39 #9
Så er det vel fordi din min() give to forskellige rækker? DataTypen på StartTime må være text, ikk'? Så prøv at skyde
select min(starttime) from arranger where city = 'aarhus' af, og se om du får det ventede resultat - dump det helst her hvis vi skal videre...
Avatar billede sp Nybegynder
03. juni 2003 - 13:35 #10
Jo men hvis jeg fjerner 'århus' så får jeg jo overhovedet ikke Århus med.
Avatar billede zapzap Nybegynder
04. juni 2003 - 12:42 #11
Hvis din tabel indeholder f.eks.:

starttime  section city
no        syd    århus
06-01-2003 nord    århus
01-05-2002 uni    århus
så forlader du dig på streng-sammenligning, hvilket stiller krav til dit datoformat, som jo så nok skal være YYYY-MM-DD for at give anvendelige resultater.
Så prøv select min(), OG tilføj where starttime <> 'no' i subselect'en, så den ikke forstyrrer. Så prøv din select min() på et par eksempler, så du er sikker på at du får det rigtige.
Avatar billede zapzap Nybegynder
04. juni 2003 - 12:46 #12
Har lige prøvet med flg. data i arranger:
id    starttime    section    city    active
1    02-06-2003    uni    aarhus    1
2    01-06-2003    nord    aarhus    1
3    31-03-2003    syd    aarhus    1
4    05-06-2003    syd    havnen    1
5    06-05-2002    nord    havnen    1

select min(starttime) kommer med:
01-06-2003
hvor det jo er 06-05-2002 der er tidligst...
Avatar billede sp Nybegynder
04. juni 2003 - 17:51 #13
Hej zapzap det virker fint. Den kommer med alle de tidligste møder.
starttime har formatet: 03-05-28-19-30-00
yy-mm-dd-hh-mm-ss
så ændre lige dit felt. - Så vil det passe med den database jeg har.

Den viser det første møder i alle afdelinger. Det virker fint.
Den skal bare være endnu mere avanceret for den vælger alle afdelinger. Den skal kun vælge en afdeling for hver by.
Avatar billede zapzap Nybegynder
06. juni 2003 - 15:05 #14
Ja det er jeg med på. Her er nu min arranger:
id    starttime    section    city    active
1    2003-06-02    uni    aarhus    1
2    2003-06-01    nord    aarhus    1
3    2003-03-31    syd    aarhus    1
4    2003-06-05    syd    havnen    1
5    2002-05-05    nord    havnen    1
6    no    vest    aarhus    1

Her er min SQL
SELECT t1.*
FROM Arranger AS t1
WHERE t1.StartTime<>'no'  AND t1.active=1  AND t1.StartTime = (SELECT Min(StartTime) FROM Arranger WHERE city=t1.city AND StartTime>='" & Timenow & "')
ORDER BY [Section] DESC;

og her er mit resultat:
id    starttime    section    city    active
3    2003-03-31    syd    aarhus    1
5    2002-05-05    nord    havnen    1

som vist også er rigtigt?
Avatar billede zapzap Nybegynder
06. juni 2003 - 15:07 #15
Prøv at dumpe de data der giver problemer...
Avatar billede sp Nybegynder
07. juni 2003 - 08:16 #16
SQL = "SELECT t1.* FROM Arranger AS t1 WHERE t1.StartTime<>'no' AND t1.active=1 AND t1.StartTime = (SELECT Min(StartTime) FROM Arranger WHERE city=t1.city AND StartTime>='" & Timenow & "') ORDER BY [Section] DESC;"

Her er mit resultat:

København, 12/6 -03 kl. 19:00
Århus uni, 11/6 -03 kl. 19:30
Århus syd, 11/6 -03 kl. 19:30
Århus nord, 11/6 -03 kl. 19:30
Aalborg, 12/6 -03 kl. 19:00

Den tager alle 3 afdelinger fra Århus...?
Avatar billede sp Nybegynder
07. juni 2003 - 08:22 #17
Min arranger ser sådan ud:

StartTime    City    Section
03-06-11-19-30-00    Århus    Århus nord
03-06-11-19-30-00    Århus    Århus syd
03-06-11-19-30-00    Århus    Århus uni
Avatar billede sp Nybegynder
07. juni 2003 - 08:23 #18
Jeg har lige slettet København og Aalborg.
Avatar billede sp Nybegynder
06. november 2003 - 15:23 #19
Jeg har brugt denne. De 2 andre afdelinger skulle alligevel sluttes sammen.
Men jeg fik ikke svaret hvis der er flere afdelinger i en by.

SQL = "SELECT t1.* FROM Arranger AS t1 WHERE t1.StartTime<>'no' AND t1.active=1 AND t1.StartTime = (SELECT Min(StartTime) FROM Arranger WHERE city=t1.city AND StartTime>='" & Timenow & "') ORDER BY [Section] DESC;"
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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