Avatar billede dcheng Novice
20. maj 2004 - 16:23 Der er 11 kommentarer og
1 løsning

Altid samme værdi i flere felter

Forestil dig jeg har en MySQL DB med en tabel "telefonbog" jeg har der i. Kolonnerne: "id" "navn" "adresse" "tlf_nr" "mob_nr" "email" og en hel masse rækker med navne adresser og telefon nr.

Men nogle af dem i telefonbogen bor sammen så de har samme hjemme nr. så de vil altid have den samme værdi i min DB. Jeg vil nu gerne vide om det kan lade sig gøre at hvis jeg fx. ændrer tlf_nr feltet ved Peter Hansen at det så også bliver automatisk ændret hos Søren Hansen.

Jeg har PHPMyAdmin til rådighed...

NB! Dette er bare et eksempel som svarer til det samme jeg laver se bort fra at det er en telefonbog...
Avatar billede fsconsult.dk Nybegynder
20. maj 2004 - 16:52 #1
Umiddelbart vil jeg mene at det kræver en trigger, hvilket MySQL først får i 5.1 (såvidt jeg husker).
Avatar billede cpufan Juniormester
20. maj 2004 - 16:52 #2
sql = "Update telefonbog set tlf_nr = nytnr where adresse ='deres adresse'";
skulle opdatere fastnetnr alle steder der har samme adresse
Avatar billede dcheng Novice
20. maj 2004 - 17:08 #3
cpufan Dit forslag lyder fornuftigt men med det forslag bliver det så ikke kun gjort EN gang? Bliver alle værdierne ændret hvis jeg så forsøger at ændre EN af dem til et andet nr.? eller skal jeg så til at køre "Update telefonbog set tlf_nr = nytnr where adresse ='deres adresse'" igen?
Avatar billede cpufan Juniormester
20. maj 2004 - 17:24 #4
nej den retter tlf alle de steder der har den adresse
Avatar billede cpufan Juniormester
20. maj 2004 - 17:26 #5
men du skal rette ved at køre sql-kommandoen, ikke ved manuel rettelse
Avatar billede dcheng Novice
20. maj 2004 - 17:32 #6
Ja det ved jeg men hvis jeg nu kører den nu! Så får alle de felter som har "deres adresse" "nytnr" i feltet tlf_nr.... Det er jeg klar over...

Men det løser ikke mit problem... Da jeg kommer til at skulle køre den hver eneste gang jeg ændrer en af dem som har samme adresse...... Jeg skal bruge en slag permanent forbindelse mellen specifikke felter... Altså hvis man ser det fra det fra Digital teknik skal jeg bruge en OR gate..

Det er sku svært at forklare må jeg indrømme..
Avatar billede sukos Juniormester
20. maj 2004 - 22:24 #7
Du skal lave en query som tjekker om der er andre med samme værdi som sendte, og hvis der er, så update table.
Altså, fordi du ændrer i en, skal alle andre tilsvarende opdateres, derfor, tjek først om der er andre som har samme værdi.
Men er nu heller ikke lige helt med på hvad du vil! :O)
Avatar billede dcheng Novice
20. maj 2004 - 23:08 #8
ok ud i pap...

Jeg har en telefonbog med kolonnerne "id" "navn" "adresse" "tlf_nr" "mob_nr" "email" og en hel masse rækker med kontakt personer i.

Nogle af dem bor ALTID sammen så de har altid samme fastnet telefon. Derfor skal "tlf_nr" altid være den samme hos dem begge to.

Men
Avatar billede dcheng Novice
20. maj 2004 - 23:10 #9
hvis jeg opdaterer en ud de 3 via et script så skal de resterende 2 andre's tlf_nr også følge den som jeg ændrer..
Avatar billede dcheng Novice
20. maj 2004 - 23:11 #10
Det er det som jeg vil have gjort automatisk men med cpufan's ide så skal det jo gøre hver gang...
Avatar billede Slettet bruger
23. maj 2004 - 17:54 #11
Du kan eventuelt gøre det ved have en ekstra tabel til hjemmenummer og adresse. I din normale tabel peger du så bare på et id i hjemme-tabellen. På den måde vil adresser og telefonnumre, der hører sammen kun stå et sted, og skal dermed kun rettes en gang, selv om du har flere personer på adressen.
Avatar billede dcheng Novice
27. september 2004 - 11:53 #12
lukker spm
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