Gå til innhold

Sortere koblede tabeller i en mySQL-database


Anbefalte innlegg

Jeg har to tabeller i databasen min: brukere og poststeder

 

brukere

bruker_navn

bruker_postnummer

 

poststeder

postnummer

poststed

 

 

Jeg ønsker å kjøre en spørring mot databasen hvor jeg henter ut alle brukere sortert etter poststed (ikke postnummer). Hvordan ser en slik mySQL-spørring ut?

Lenke til kommentar
Videoannonse
Annonse
Alternativt

SELECT t1.bruker_navn, t2.poststed FROM brukere t1, poststeder t2
WHERE t1.bruker_postnr = t2.postnummer
ORDER BY poststed

9396400[/snapback]

 

Utgått syntax. Det fungere selvfølgelig, men det er mye enklere å lese roacs forslag siden JOIN kondisjonen er plassert i INNER JOIN statementet og ikke i WHERE statementet.

Lenke til kommentar
Kan jeg spørre hvorfor? Gjennom alle kurs jeg har hatt har jeg lært det motsatte. Er jeg feilinformert eller er det personlig preferanse?

9400131[/snapback]

Rett og slett fordi en tabell er en samling av flere "objekter" av samme slag. F eks kan en tabell inneholde informasjon om flere biler, og du jobber "alltid" med sett av flere, og bare unntaksvis en og en record.

Lenke til kommentar
Jeg syns ikke det var en god grunn, men siden det er et spørsmål om preferanse er det vel ikke egentlig et diskusjonsemne (og jeg er på vei til å hijacke en tråd - Beklager TS). Men vil "jobber med muligheten for flere objekter" da si at du navngir en klasse feks i Java i flertallsform også?

9401415[/snapback]

En klasse er en mal for noe, et objekt er en instans av klassen. Begge bør være i entallsform. En collection eller hashmap derimot er en gruppering av flere tilsvarende objekter, og der kan det være hensiksmessig å navngi dem med flertallsform. Men, det er likevel en stor forskjell her. Java er et programmeringsspråk der man i utganspunktet jobber med et og ett objekt, mens man i databaser skal, i henhold til best practice, jobbe settorientert. I Java kan man således håndtere en og en bil, mens man i en database skal håndtere bilene, evt de bilene som tilfredsstiller et kriterie. Det er derfor ikke helt enkelt å sammenligne java og databaser, og det er også en av grunnene til at man ikke nødvendigvis bør la en person være både programvareutvikler og databaseutvikler, for programvareutviklere erfaringsmessig ofte har problemer med settorientert tankegang. (Det er sikkert mange som håndterer det godt også, men jeg har sett så alt for mange som ikke gjør det).

Endret av roac
Lenke til kommentar
Kan jeg spørre hvorfor? Gjennom alle kurs jeg har hatt har jeg lært det motsatte. Er jeg feilinformert eller er det personlig preferanse?

9400131[/snapback]

Dette kan være for at de ikke kjenner ISO-11179, som for SQL hevder at "Tables, sets, and other collections shall be named with a collective, class, or plural name." Det kan være helt greit å navngi en tabell som kontoregister, evt konti. Dette ligger vel forøvrig relativt tett opp til det man gjør i f eks Java.

 

Kilde: Joe Celco's SQL Programming Style, utgitt på Morgan Kaufmann i 2005.

Endret av roac
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...