Gå til innhold

punktum påkrev i sql-spørringer?


Anbefalte innlegg

Har en oppgave der tabellene er gitt;

 

1. create table ingrediens

 

(id int not null auto_increment primary key, navn varchar(64),

beskrivelse varchar(255), pris int);

 

2.

 

create table rett

 

(id int not null auto_increment primary key, navn varchar(64), beskrivelse

varchar(255), opprinnelse varchar(255), kategoriid int not null);

 

3.

 

create table kategori

 

(id int not null auto_increment primary key, navn varchar(64),

beskrivelse varchar(255));

 

4. create table rettingrediens

 

(rettid int not null, ingrediensid int not null, megde int, primary

key(rettid, ingrediensid));

 

 

Det jeg lurer på:

 

Hvis jeg nå skal kjøre en spørring, er jeg da nødt til å bruke den irriterende skrivemåten;

 

tabellnavn.feltnavn,

 

når feltene jeg bruker IKKE heter det samme?

 

 

Eks: Skal sette en betingelse i dette eksempelet hvor id fra ingrediens skal være lik ingrediensid fra rettingrediens.

 

Er det nok å skrive; ingrediens.id = ingrediensid

Kontra; ingrediens.id = rettingrediens.ingrediensid

 

Grunnen til at jeg spør, er at i løsningsforslaga til alle eksamenssett bruker de den lengste metoden, og jeg skriver disse tingene for hånd og syns det blir irriterende og skrive unødvendig mye.

 

Så kan jeg altså droppe den lange skrivemåten, om feltnavnene ikke er like?

Lenke til kommentar
Videoannonse
Annonse
Så kan jeg altså droppe den lange skrivemåten, om feltnavnene ikke er like?

 

Kan og bør er to helt forskjellige ting. ;)

 

Hva hvis noen legger til en kollonne i den ene tabellen, slik at navnet ikke lenger er unikt?

 

Vanlig å gjøre noe ala:

 

SELECT u.id, u.first, u.last, s.salary FROM
employees AS u,
salaries AS s
WHERE
u.id = s.userid AND
s.salary >= 10;

 

På den måten er det veldig tydelig og stabilt hva du mener, men slipper fult så mye skriving.

Lenke til kommentar

Ser ut som en kjekk måte å skrive ting på ja, selv om det ikke sparer så utrolig mye tid siden eksamensoppgavene er relativt korte.

 

Men så lenge vi har en database hvor vi vet at tabellene ikke skal utvides med nye felter, kan vi da være enige om at vi likegreit bare kan droppe den "lengre skrivemåten"?

Lenke til kommentar
Men så lenge vi har en database hvor vi vet at tabellene ikke skal utvides med nye felter, kan vi da være enige om at vi likegreit bare kan droppe den "lengre skrivemåten"?

 

Det pleier å virke ihvertfall.

 

Hvordan sensor ser på det er ett annet spørsmål. ;)

 

Kan hende han/hun blir imponert fordi du vet det er mulig, eller irritert fordi du ikke gjør det som du har lært... Kan også hende sensor ikke vet det vil virke. ;)

Lenke til kommentar

Her skal du få et stalltips fra meg. Har drevet med databaseutvikling og programmering i 10 år.

 

Men så lenge vi har en database hvor vi vet at tabellene ikke skal utvides med nye felter

Stikkordet her er "vet". Vi "vet" aldri hva fremtiden bringer. Samme hva noen sier at de vet i dag, så skal jeg love deg at de kommer krypende om et år eller to og sier at de tok feil. Stol ALRDI på "vet".

 

Derfor anbefaler jeg at du aliaser alle tabeller i spørringer og refererer alle kolonner med to-parts navn, slik terjeelde har gjort.

 

En annen ting er at jeg absolutt ikke liker syntaxen for å joine to tabeller som terjeelde bruker i eksempelet.

Endret av kaffenils
Lenke til kommentar
Stikkordet her er "vet". Vi "vet" aldri hva fremtiden bringer. Samme hva noen sier at de vet i dag, så skal jeg love deg at de kommer krypende om et år eller to og sier at de tok feil. Stol ALRDI på "vet".

 

Meget enig.

 

Det går ann å argumentere for at i dette tilfelle vet han det, siden det er en skole-oppgave, og ikke noe som skal er til faktisk bruk, og skal driftes.

 

Likefult vil jeg anbefale å danne, og holde på, gode vaner også ved skoleoppgaver. Både fordi sensor kan ha samme tanker som oss, og også fordi vanskelige vaner kan være vonde å bli kvitt.

 

Det er ikke uten grunn at folk som er "rett ut av skolen" ofte blir sett på med litt skepsis. ;)

 

En annen ting er at jeg absolutt ikke liker syntaxen for å joine to tabeller som terjeelde bruker i eksempelet.

 

Må vel egentlig si meg litt enig. Var bare enkleste/korteste måten å skrive en spørring for å illustrere noe helt annet.

 

Både når det gjelder joiningen, og også dette med å bruke fulle/alias-navn, så er det en ting jeg lurer på om vi har glemt å tenke på:

 

Spørsmålet er ikke bare om tabellene kommer til å endres, men også noe med å ha omtanke for nåværende kollegaer, og andre som kanskje skal drifte samme system senere.

 

At en spørring virker betyr ikke at den er gjort på best mulig vis. Såfremt det ikke går ut over hvordan spørringen kjøres og ytelse, så vil jeg absolutt anbefale at man er bevist på å skrive lett lesbare spørringer. Det er kanskje noen andre som skal lett kunne se hva du har tenkt, enten for å finne ut hva spørringen gjør, eller for å endre den. Selv om dette kanskje blir mer kommunikasjon mellom mennesker enn rent teknisk, så er det like fult en viktig side av det, som kan få stor praktisk betydning.

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å
×
×
  • Opprett ny...