/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MySQL] En svær en at finde ud af!?
Fra : AlbertE


Dato : 16-09-05 11:33

Jeg indrømmer, at overskriften ikke er den bedste, men jeg kunne ikke
forklare det bedre

Jeg har følgende tabel:

History:
id, id_navn, id_telefon
1, 1, 2
2, 2, 2
3, 3, 3

Dvs. at jeg har 3 navne med 2 telefonnumre - ingen problem i det. Men hvis
så id_navn 1 skifter telefonnummer bliver der indsat en ny række i tabellen
(for at opretholde en history og dermed ikke bare ændre værdien på den
eksisterende række):

id, id_navn, id_telefon
1, 1, 2
2, 2, 2
3, 3, 3
4, 1, 5

Mit problem er så, at hvis jeg laver et udtræk på telefon tabellen (den er
ikke vist her), hvor jeg vil have en liste med hvilke navne der har f.eks.
tlf. "id_telefon 2", så figurere "id_navn 1" i listen selvom han jo har
skiftet telefonnummer til "id_telefon 5". Der burde kun være "id_navn 2" i
listen.

Hvordan laver jeg et udtræk, så jeg undgår det?



 
 
Kristian Damm Jensen (16-09-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 16-09-05 12:54

AlbertE wrote:
> Jeg indrømmer, at overskriften ikke er den bedste, men jeg kunne ikke
> forklare det bedre
>
> Jeg har følgende tabel:
>
> History:
> id, id_navn, id_telefon
> 1, 1, 2
> 2, 2, 2
> 3, 3, 3
>
> Dvs. at jeg har 3 navne med 2 telefonnumre - ingen problem i det. Men hvis
> så id_navn 1 skifter telefonnummer bliver der indsat en ny række i tabellen
> (for at opretholde en history og dermed ikke bare ændre værdien på den
> eksisterende række):
>
> id, id_navn, id_telefon
> 1, 1, 2
> 2, 2, 2
> 3, 3, 3
> 4, 1, 5
>
> Mit problem er så, at hvis jeg laver et udtræk på telefon tabellen (den er
> ikke vist her), hvor jeg vil have en liste med hvilke navne der har f.eks.
> tlf. "id_telefon 2", så figurere "id_navn 1" i listen selvom han jo har
> skiftet telefonnummer til "id_telefon 5". Der burde kun være "id_navn 2" i
> listen.
>
> Hvordan laver jeg et udtræk, så jeg undgår det?

Det gør du ikke. Du har ganske enkelt ikke information nok. *Hvis* du
tillægger id'er en betydning ud over at være nøgler og *hvis* du
postulerer, at en person kun kan have én telefon, kan det lige lade
sig gøre. Begge tiltag er usunde.

Det nemmeste vil være at tilføje en statuskolonne til tabellen, så
du kan skelne mellem gældende og historisk data. Hvis du vil gøre det
rigtig fint, lader du det være en dato, så du over i købet kan se,
hvornår ændringen skete.

Kristian


AlbertE (16-09-2005)
Kommentar
Fra : AlbertE


Dato : 16-09-05 13:10

>> Hvordan laver jeg et udtræk, så jeg undgår det?
>
> Det gør du ikke. Du har ganske enkelt ikke information nok. *Hvis* du
> tillægger id'er en betydning ud over at være nøgler og *hvis* du
> postulerer, at en person kun kan have én telefon, kan det lige lade
> sig gøre. Begge tiltag er usunde.
>
> Det nemmeste vil være at tilføje en statuskolonne til tabellen, så
> du kan skelne mellem gældende og historisk data. Hvis du vil gøre det
> rigtig fint, lader du det være en dato, så du over i købet kan se,
> hvornår ændringen skete.

Undskyld, det var også klodset af mig - jeg har et dato felt også.

id, dato, id_navn, id_telefon
1, 2005-01-01, 1, 2
2, 2005-01-01, 2, 2
3, 2005-01-01, 3, 3
4, 2005-09-16, 1, 5

Du har selvfølgelig en pointe i, at man kan lave en boolean, der bestemme om
rækken er den gældende, men jeg kan ikke se hvordan det kan lade sig ud fra
dato?



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408180
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste