14. marts 2001 - 18:57Der er
13 kommentarer og 2 løsninger
SQL: SELECT DISTINCT problem..
Jeg har flg. SQL kald
SELECT city,id FROM addresses WHERE areaid=1 ORDER BY city;
Nu vil jeg så gerne have at \"city\" bliver select\'et med DISTINCT således at hvis der er flere \"city\" med samme værdi, at så giver den mig kun een post.
Men hvis jeg skriver:
SELECT DISTINCT city,id FROM addresses WHERE areaid=1 ORDER BY city;
virker det minus ..
hvor dan pokker klarer jeg den. Jeg skal bruge både city og id feltet såe ...
Desuden, hvordan laver jeg en COUNT() på sårn en DISTINCT fætter ?
Efter ti år i London, Madrid, Paris og Utrecht kommer Sabios AI-fokuserede program af arrangementer om kundeoplevelser, ‘Disrupt’, for første gang til Danmark.
hvis du normaliserer dine tabeller, så vil det fungere perfekt. tror nok dette vanskelig kan la seg løse på den måten du har bygget opp din tabell...(ettersom jeg kan forstå)
å normalisere sine tabeller vil banalt sett bety å splitte dem opp i mindre tabeller som er mer spesialiserte. Disse spesialiserte tabellene inneholder ofte sett med data som ofte blir repetert (som fx. byer, amter, land osv.) I ditt spesifikke tilfelle ville jeg ha laget flg tabeller (bare et raskt forslag/eksempel):
********* adresser ********* id navn email adresse byId
********** byer ********** byId bynavn
det man gjør er rett og slett å kun registrere byId til den byen man bor i (i din adresse tabell). Dermed så slipper man for å fylle sin database opp med masse overflødige data...tenk fx på mengden med data man kan spare ved å skrive \"1\" istedenfor \"København Ø\" for hver adresse som ligger i København Ø
Dette er grunnleggende datamodellering, og er faktisk ikke så vanskelig. Man lærer seg å bygge opp noen databasestrukturer som gjør oppgaver (som du har problemer med nå) utrolig enkle...
nute:> du siger noget ... men problemet er, at jeg ikke altid kan være sikker på at bynavnet skrives på nøjagtigt samme måde .. f.eks. kunne man jo skrive:
nute:> det kan jeg heller ikke for det er adresser som en indtaster.. Det er til en forhandler liste hvor man f.eks. har lande områder:
Jylland Sjælland Fyn osv....
når man så klikker på et af dem, vises der en liste over byer i det område, ud fra de adresser der findes. Så får man f.eks. en liste der (nu) ser sådan ud:
København K København K København K København K København N København Ø Brøndby
osv.
hver af disse har så et link til en side hvor ID\'et på posten bliver overført .. men jeg vil kun have vist flg. (ud fra ovenstående liste)
jeg kan godt se hva du mener, men hvis man har laget en god relasjonsstruktur til grunn for dette, så er det uten tvil den beste måten...selvfølgelig krever det en omstrukturering av dine tabeller, og det er vel kanskje ikke så optimalt ?!
men jeg tror nok du vil få problemer med din opprinnelige SQL query....man skal nok konsentrere seg riktig mye for å få den til å kjøre (og ikke minst kjøre optimalt)
nute:> hmm .. ja .. nu er det ikke noget stort projekt (3 ASP sider) så jeg gider sku\'t omstrukturere DB\'en .. jeg finder på noget andet.. ellers tak fordi du gad prøve..
Gider du ikke lige lave et svar ? jeg vil gerne give dig lidt point som tak for du gad prøve at hjælpe...
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.