webForumDet fria alternativet

distinct

20 svar · 388 visningar · startad av Bjuris

BjurisMedlem sedan juli 2001542 inlägg
#1

Jag håller på lite med statistik och har en SQL sträng som ser ut som följande:

SELECT capacity.flight, capacity.date, stats.kgs, stats.awb FROM capacity inner join stats on capacity.flight = stats.flight and capacity.date = stats.date Where [capacity.date] = '01AUG' AND capacity.route ='GLA LHR' order by capacity.date, capacity.Flight, stats.awb

Nu är det så att det finns flera som har samma stats.awb, men jag vill bara lista en av varje....

Hur skall jag göra det?
distinct????

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Ja distinct tar bort duplikat så det borde vara lämpligt.

Har du testat och upplevt något traumatiskt problem med detta?

BjurisMedlem sedan juli 2001542 inlägg
#3

Det är så att det int fungerar när jag lägger till distinct.

Det enda som skall vara distinct är nämligen stats.awb.
annars så kunde man ju bara skriva
select destinct capacity.flight...... i början.

Men det är nämligen så att på varje route så går det ett antal flighter och på varje flight så finns det ett antal awb'er.
Ibland kan en awb förekomma flera gånger per flight då den innehåller en statuskod som talar om vad som hänt med den (ointressant då det är vikten jag är ute efter, och som är samma obroende på statuskod)

capacity.flight
capacity.date
stats.kgs
stats.awb

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Vilket awb vill du ha då?

SELECT capacity.flight, capacity.date, stats.kgs, min(stats.awb )
FROM capacity inner join stats on capacity.flight = stats.flight and capacity.date = stats.date 
Where [capacity.date] = '01AUG' 
AND capacity.route ='GLA LHR' 
group by capacity.flight, capacity.date, stats.kgs,
order by capacity.date, capacity.Flight, 4
BjurisMedlem sedan juli 2001542 inlägg
#5

Det spelar ingen roll vilken awb jag tar, bara den inte förekommer fler än en gång.

Däremot så får jag ett fel på sql frågan som du skrev.

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'date' as part of an aggregate function.

Förresten i SQL frågan, vad menas med 4:an i slutet?

LarsGMedlem sedan dec. 200012 465 inlägg
#6

4:an betyder att man använder fjärde uttrycket i select-listan för att sortera.

Grundorsaken till felet är nog att du har en kolumn som heter date.

Det kanske går om du anger lite klamrar, jag vet inte exakt hur access hanterar det. Helst borde du byta namn på den kolumnen

SELECT capacity.flight, [capacity.date], stats.kgs, min(stats.awb )
FROM capacity inner join stats on capacity.flight = stats.flight and capacity.date = stats.date 
Where [capacity.date] = '01AUG' 
AND capacity.route ='GLA LHR' 
group by capacity.flight, [capacity.date], stats.kgs,
order by capacity.date, capacity.Flight, 4
BjurisMedlem sedan juli 2001542 inlägg
#7

Fungerade utmärkt (efter att jag tog bort ett komma innan group by) :e :e :e

Jag bugar och bockar.
:birp

BjurisMedlem sedan juli 2001542 inlägg
#8

Jag var nog lite för snabb där att säga att det fungerar perfa......det gör det inte.....

när jag kör med den sista sql satsen som jag fick av dig LarsG så visar den inte lika många dubletter, men en del visas.

När jag kör med din sql fråga:

BD 0001 09JUL 643  23611457014
BD 0001 09JUL 801  23611457294
BD 0001 09JUL 614 7571801144
BD 0001 09JUL 567 7571801144
BD 0001 09JUL 47   7571801144
BD 0001 09JUL 243 7571801251
BD 0001 09JUL 0     7571801251
BD 0005 09JUL 10   23611341282
BD 0005 09JUL 0     23611341282
BD 0007 09JUL 31   61845741850
BD 0007 09JUL 0     61845741850

(Observera att i kolumn tre som är vikten så är dom inte lika dana, men det kommer den att vara i databasen)

Men om jag kör med den som jag hade först så visas det ännu mera dubletter.

LarsGMedlem sedan dec. 200012 465 inlägg
#9

Tänker du på dessa två poster

BD 0001 09JUL 614 7571801144
BD 0001 09JUL 567 7571801144

?

Vilket av 614/567 vill du ha då?

BjurisMedlem sedan juli 2001542 inlägg
#10

Japp.

samt
BD 0005 09JUL 10 23611341282
BD 0005 09JUL 0 23611341282
BD 0007 09JUL 31 61845741850
BD 0007 09JUL 0 61845741850

Dock så på detta nummer 23611341282 så finns det 6 poster.

Det spelar ingen roll vilken vikt egentligen, då dem kommer att vara samma i livesystemet, men om det nu på någon post inte skulle var samma i live så skulle jag vilja ha det högsta talet.

LarsGMedlem sedan dec. 200012 465 inlägg
#11

Har du någon primärnyckelskolumn (räknare) i tabellen?

BjurisMedlem sedan juli 2001542 inlägg
#12

Nix.

Det finns ingen primär nyckel/räknare i tabellen

LarsGMedlem sedan dec. 200012 465 inlägg
#13
SELECT capacity.flight, [capacity.date], max(stats.kgs), min(stats.awb )
FROM capacity inner join stats on capacity.flight = stats.flight and capacity.date = stats.date 
Where [capacity.date] = '01AUG' 
AND capacity.route ='GLA LHR' 
group by capacity.flight, [capacity.date]
order by capacity.date, capacity.Flight, 4
BjurisMedlem sedan juli 2001542 inlägg
#14

Nu får jag inga dubletter, men det saknas en del.
På frågan skall jag få 6 stycken svar, men jag får bara tre.

LarsGMedlem sedan dec. 200012 465 inlägg
#15

Jag har lite svårt att se exakt vad du vill ha fram för data. Kan du beskriva dina tabeller med lite datainnehåll och sedan säga vad du vill ha för resultat.

BjurisMedlem sedan juli 2001542 inlägg
#16

OK.

Jag har en tabell som heter capacity, innehållande alla flighter som går en viss dag innom en viss route.
- Flight
- Date
- Route

Sen har jag en tabell som heter stats, som innehåller en jäkla massa info (den är tagen från en stor loggfil)
I den finns det bla.
- Flight
- Date
- Weight
- AWB
+ en massa olika status fält som egentligen är oväsentligt.

I sökdialogen så skriver jag in ett datum och en route och då skall alla flighter visas under den dagen, med info om vilka AWB´er och vikten på denna AWB.

(AWB = fraktsedelsdokument)

LarsGMedlem sedan dec. 200012 465 inlägg
#17

Är detta fortfarande aktuellt?

Du visar inget datainnehåll så jag förstår inte vad du menar med duplikat.

BjurisMedlem sedan juli 2001542 inlägg
#18

japp fortfarande aktuellt, har bara varit lite förkyld ett tag.

Vad menar du med datainnehåll?

typ:
- Flight BD 0001
- Date 01AUG
- Route GLA LHR

- Flight BD 0001
- Date 01AUG
- Weight 509
- AWB 23611047433

???

BjurisMedlem sedan juli 2001542 inlägg
#19

Vet inte om det är ok, men jag skriver ett inlägg för att få upp denna fråga på listan igen....skäll inte på mig. :OO :e

LarsGMedlem sedan dec. 200012 465 inlägg
#20

Jo, ungefär så men att du har med de rader där du får problem med duplikat, alltså lite fler poster. Och så vill jag se vad du förväntar dig för resultat av frågan.

Om jag har det så kan jag testa själv och inte bara teoretisera.

Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb