Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:17 Der er 24 kommentarer og
3 løsninger

MySQL Kryds reference. Hvad, hvordan og hvorfor?

Hej Folkens.

jeg har efterhånden set mange snakke om at kryds-referere til andre tabeller i mysql.

Er det noget mysql kan?
hvad er det godt for?
nogle eksempler på hvordan det bruges?

øhhh.. og hvad i nu ellers har lyst til at smide  hovedet på mig. ;)
Avatar billede kdjweb Nybegynder
26. juli 2005 - 14:19 #1
f.eks. kategorier og underkategorier :)
Avatar billede kdjweb Nybegynder
26. juli 2005 - 14:22 #2
kategori:
ID - Navn
1 - Sport
2 - Sodavand

Underkategori:
ID - Kategori - Navn
1 - 1 - Tennis
2 - 1 - Fodbold
3 - 2 - Cola
4 - 2 - Fanta

er det dét du mener? :)
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:23 #3
jamen er det noget man skal gøre manuelt, eller er der nogle smarte funktioner i mysql som kan gøre det for dig?

Hvordan bruges det og til hvad??

og vigtigst af alt... hvorfor?
Avatar billede jaw Nybegynder
26. juli 2005 - 14:24 #4
Ja, eller forfatteren til en nyhed ligger i tabellen "brugere" og selve nyheden ligger i "nyheder" - hvor krydsreferencen så kan være id'et på brugeren :)
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:25 #5
okey vi har slået fast HVAD det er. :)

Normalt ville jeg lave en tabel bestående af id, forfatter, nyhed

og så bare hive det ud den vej?
Avatar billede kdjweb Nybegynder
26. juli 2005 - 14:26 #6
du skal selv lave kategorier og underkategorier og tabellens opbygning, så kan du hente navnene i 2 dropdown bokse, kategori og underkategori.

du kan bruge det til hvis du laver et system ligesom eksperten.
det her er f.eks. under kategorien programmering og underkategorien PHP.
Avatar billede kdjweb Nybegynder
26. juli 2005 - 14:28 #7
blackscorpion, det er bare at sammenligne
Avatar billede jaw Nybegynder
26. juli 2005 - 14:28 #8
Det smarte i det - for lige at tage min kommentar - er, at man ved at have en database med forfatteren kan have al information om ham (navn, adresse, e-mail, etc, etc) ét sted, og så bare hente det hver gang forfatteren foretager sig noget på siden, udfra hans id.
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:29 #9
jamen så ville jeg så typisk lave en tabel til hver ting?

f.eks. en tabel der hed php, og så smidt det hele ind der, med samme unikID for det givende spørgsmål. ?
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:31 #10
jaw -> jamen der ville jeg så lave en bruger tabel, med det hele i der, så når han logger ind, så logger den hans brugerID og brugernavn i en session.

undskyld, kan godt være mig der ikke helt forstår det smarte i det...
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:31 #11
kdjweb -> jeg ved det godt bare rolig. ;)
Avatar billede kdjweb Nybegynder
26. juli 2005 - 14:33 #12
okay :)
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:35 #13
okey lige et hurtigt spørgsmål der måske kan afgøre det hele nu og her.

hvis jeg nu har en bruger tabel, med alle oplysninger i, og en given bruger fortager sig noget, der kræver at jeg henter informationerne fra den brugertabel, er det en kryds reference??
Avatar billede Slettet bruger
26. juli 2005 - 14:38 #14
Ja
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:39 #15
nu er jeg godt nok skuffet... troede det var et eller andet fancy og smart som mysql kunne, som jeg endnu ikke havde opdaget. :(

så lige så snart at man bruger information fra 1 tabel til at hente oplysninger i en anden, så er det en kryds reference.... æv. :(

syntes efterhånden php/mysql er ved at være ALT ALT for trivielt.

det er det samme man laver om og om igen. :(
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:41 #16
selv om man laver en database med 500 tabeller der i alt fylder 5GB og arbejder sammen på kryds og tværs, så er det i bund og grund det samme om og om igen... intet sjovt i det mere. :(
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 14:48 #17
nå men smid lige et svar, alle 3, så får i 10 point hver. :)
Avatar billede neess Nybegynder
26. juli 2005 - 15:54 #18
DU kan jo lave en select hvor du henter fra 2 tabeller. eller en join.
hvis det er du f.eks vil have
Tabel1(forfatter,nyhed....)
Tabel2(forfatter,navn,adresse)
Så du for et resultset der hedder
forfatter,nyhed,navn,adresse.
Hvis der er det som du tænker på.
Avatar billede jaw Nybegynder
26. juli 2005 - 16:03 #19
Trivielt? Tjah, det er det måske, men det er alle sprog jo sådan set... Der er jo ingen grund til at gøre det mere besværligt, det "avancerede" kommer jo når man begynder at bruge join's :)
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 16:21 #20
joins?

please explain. :P
Avatar billede jaw Nybegynder
26. juli 2005 - 16:25 #21
Tjah, mit eksempel fra tidligere, hvor forfatteren ligger i en anden tabel end selve nyheden - hvor det eneste der henviser til forfatteren er hans id:

SELECT nyhed.emne, nyhed.tekst, forfatter.navn, forfatter.email
FROM nyhed
LEFT JOIN forfatter ON forfatter.id = nyhed.forfatter
LIMIT 1

Forståeligt, ellers må du spørge igen :) Det der kan være lidt tricky er at få dit rigtige felter henvist til de rigtige felter...
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 18:40 #22
jaw -> wow... der tabte du mig totalt...

select nyhed.emne osv <-- det er tabel.felt ikke?

LEFT JOIN forfatter ON forfatter.id = nyhed.forfatter <--- gør hvad præcist?
Avatar billede Slettet bruger
26. juli 2005 - 20:22 #23
Den giver dig den forfatter (hvis der er nogen), der har skrevet netop de(n) nyhed(er) du har i din tabel. - Den "lægger" tabellerne sammen, så det virker som een stor tabel.
Avatar billede Slettet bruger
26. juli 2005 - 20:23 #24
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 20:30 #25
så mangler vi bare svar fra kdjweb. ;)

Kigger på siden senere wicez. ;)
Avatar billede kdjweb Nybegynder
26. juli 2005 - 21:52 #26
jeg var lige ude og gå en tur med min storebror :-P
Avatar billede blackscorpion Nybegynder
26. juli 2005 - 23:15 #27
ja ja, ville jeg også sige. :P
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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