Avatar billede fatass Nybegynder
29. juli 2003 - 19:13 Der er 15 kommentarer og
1 løsning

List over manglende forekomster i en talrække

Jeg har en masse data i min database og et af felterne er et tal der refferer til et tal i en anden tabel. Det er bare et alm. heltal.
Jeg skal nu finde alle de tal, som _ikke_ er der inden for talrækken 1-1000.

Er der nogen nem måde at gøre dette på i mysql?
Avatar billede ahv Nybegynder
29. juli 2003 - 19:14 #1
SELECT * FROM tabel WHERE tal > 1000 AND tal < 1
Avatar billede arne_v Ekspert
29. juli 2003 - 19:16 #2
SELECT * FROM tabel WHERE tal > 1000 OR tal < 1
Avatar billede detox Nybegynder
29. juli 2003 - 19:17 #3
Kunne du formulere spørgsmålet lidt tydeligere?
Avatar billede ahv Nybegynder
29. juli 2003 - 19:18 #4
Kan da vist godt mærke jeg ikke har fået sovet i nat, arne_v's sætning er selvfølgelig den rigtige, taller skal enten være større end 1000 eller mindre end 1 og ikke begge dele, da dette jo slet ikke kan lade sig gøre ;)
Avatar billede fatass Nybegynder
29. juli 2003 - 19:20 #5
I misforstår (eller jeg er dårlig til at forklare...)

Alle tallene i tabellen ligger inden for 1-1000, men jeg skal finde de tal som mangler for at udfylde hele talrækken.

Et eksempel: (1-10)

jeg har i tabellen:
1,2,3,4, 6,7, 9,10

Så skal jeg finde 5 og 8...
Avatar billede ahv Nybegynder
29. juli 2003 - 19:21 #6
Jeg ved ikke kan MySQL returnere noget der ikke er der?
Avatar billede detox Nybegynder
29. juli 2003 - 19:24 #7
Bli'r nok nemmest at gøre i php, eller noget.
Avatar billede arne_v Ekspert
29. juli 2003 - 19:25 #8
Langt nemmere at lave i applikationen end i SQL.
Avatar billede arne_v Ekspert
29. juli 2003 - 19:26 #9
SELECT DISTINCT tal FROM tabel ORDER BY tal

skulle gøre det ret nemt at finde de manglende i applikationen.
Avatar billede arne_v Ekspert
29. juli 2003 - 19:28 #10
Hvis ikke lige netop det var MySQL kunne du lave en tabel numtabel med et
felt numfelt med tallene 1-1000 og så lave:

SELECT numfelt FROM Numtabel WHERE numfelt NOT IN (SELECT tal FROM tabel)
Avatar billede fatass Nybegynder
29. juli 2003 - 19:28 #11
okay, så må jeg lege lidt med php. Håbede bare at der var en nem måde at gøre det på i mysql.

Tak for hjælpen

arne_v får pointene for at hjælpe godt på vej
Avatar billede fatass Nybegynder
29. juli 2003 - 19:29 #12
Men det vil altså ikke virker i mysql?
Avatar billede fatass Nybegynder
29. juli 2003 - 19:30 #13
Det er lige meget. Jeg finder ud af noget i php i stedet.
Avatar billede detox Nybegynder
29. juli 2003 - 19:31 #14
I php kan du bruge range() og array_diff() til at finde dem i et snuptag.
Avatar billede fatass Nybegynder
29. juli 2003 - 19:32 #15
okay. Jeg prøver lige at kigge på de funktioner. Tak for hintet
Avatar billede arne_v Ekspert
29. juli 2003 - 19:33 #16
MySQL supporterer desværre ikke NOT IN SELECT.

Er på vej.

Men først i version 4.1 !
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