Avatar billede zurekk Nybegynder
03. maj 2007 - 21:58 Der er 16 kommentarer og
1 løsning

Advanced SQL'ing =D

Hej Eksperter,

Jeg tænkte på om i kender nogle gode sites hvor jeg kan lærer lidt mere avanceret udtrækning fra mySQL?

Jeg kommer til at skulle hente ud fra mySQL, sammenligne fra flere felter, hente ud fra ny, sorterer etc. MEGET tit, og jeg kender faktisk ikke til andet end SELECT, UPDATE, DELETE, og få andre.

Jeg prøvede google, og mysql.com, men fandt intet brugbart.

HJÆLP!

På forhånd tak!
Avatar billede hmortensen Nybegynder
03. maj 2007 - 23:39 #1
Det er ikke fordi der er så meget mere end de tre forskellige typer kald, til brug på selve dataen (der er en masse andre til database, tabel og felter), men de kan bruges på utrolig mange forskellige måder, til forskellige formål.

Du kan fx. prøve at køre den her lektion igennem:
http://www.w3schools.com/sql/default.asp

Som siden også fortæller, er SQL et standard sprog til databaser, men hver database type har nogle specifikke udtryk og konstruktioner, men de er som oftes til at finde i manualen, når man ved hvad man skal bruge, eller kender keywordet fra anden databasetype.

En vigtig ting at lære er joins, som også er beskrevet i lektionen.

Når du så føler dig hjemme i SQL, kan du kigge på views, stored procedures og triggers.
Avatar billede dkfire Nybegynder
03. maj 2007 - 23:53 #2
Hvis der er noget du skal gøre mange gange, så kan Stored Procedure måske bruges.
Det virker vist nok kun for MySQL version 5.

http://www.mysql.com/news-and-events/newsletter/2004-01/a0000000297.html

eller

http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html
Avatar billede zurekk Nybegynder
04. maj 2007 - 20:08 #3
hmortensen
"der er en masse andre til database, tabel og felter"
Det var noget af det jeg ledte efter :D

Altså noget ala. php.net, et leksikon med alle funktionerne.

Jeg vil gerne kunne sammenligne felter, plusse minus, hive højeste ud, etc. etc.
Jeg kommer nemlig til at have meget "order by" og "relevance" hvor jeg kommer til at skulle sammenligne ting for at hente det korrekte indhold ud :)

Men leder bare lidt videre.

Smid et svar, begge.
Avatar billede hmortensen Nybegynder
04. maj 2007 - 20:13 #4
"Jeg vil gerne kunne sammenligne felter, plusse minus, hive højeste ud, etc. etc.
Jeg kommer nemlig til at have meget "order by" og "relevance" hvor jeg kommer til at skulle sammenligne ting for at hente det korrekte indhold ud"

Det er SELECT du skal bruge der.
Når du har været den lektion igennem, burde du kunne det du søger.

"der er en masse andre til database, tabel og felter"

Der er CREATE, ALTER, REMOVE etc, og bruges ikke til at behandle data.
Avatar billede zurekk Nybegynder
04. maj 2007 - 20:26 #5
Ja okay, fandt også lige en funktions liste på:
http://www.w3schools.com/sql/default.asp

Smid et svar =)

Men lad mig give dig et eksempel på noget jeg søger.

Jeg kommer til at have et felt der hedder tags, som vil se sådan her ud:
tag1,tag2,tag3
Så vil jeg gerne kunne hive alle dem ud, sammenligne dem med hinanden, og kun udskrive en af hver.
Og også kunne udskrive de 3 mest skrevne tags.

Ved du forresten om MAX(felt1,felt2) virker?
Fordi ser kun MAX(felt1) på w3schools, og da jeg prøvede med MAX(felt1,felt2) ville det ikke virke :(
Avatar billede hmortensen Nybegynder
04. maj 2007 - 20:28 #6
"Jeg kommer til at have et felt der hedder tags, som vil se sådan her ud:
tag1,tag2,tag3"

Altså feltet tags indeholder forskellige teksts-strenge, og så vil du ha de 3 strenge som fremkommer flest gange?
Avatar billede zurekk Nybegynder
04. maj 2007 - 20:33 #7
Felter kommer til at have 3 tags, adskilt via et komma.

blod,gryde,sukkerknalder
Avatar billede hmortensen Nybegynder
04. maj 2007 - 20:36 #8
Det virker som et ikke helt optimalt database design.

Måske vi kan komme frem til noget bedre hvis du viser og forklarer hvordan det hænger sammen.
Avatar billede zurekk Nybegynder
04. maj 2007 - 20:56 #9
Well..

Man kommer til at kunne tilføje en masse indhold, plus 3 tags.
Jeg har overvejet at ligge de 3 tags i en tabel for sig selv, men det ville kun gøre mit liv besværligt.

Det jeg så gør er at hente feltet 'tags' ud, exploder, og så har jeg de 3 tags for sig selv.

Nu skal jeg bare finde ud af hvordan jeg udskriver max et af hvert ord, og hvordan jeg finder de 3 mest skrevne.
Avatar billede hmortensen Nybegynder
04. maj 2007 - 21:00 #10
Jeg symes du skal gå tilbage til idéen med en ekstra tabel, da det er vejen frem. Så vil du også blot kunne lave en count af feltet med group by på feltet for at få de mest brugte.
Avatar billede zurekk Nybegynder
04. maj 2007 - 21:07 #11
Kan du give et eksempel :)?

Hvis jeg har en tabel der ser således ud:
eid (emneID, til at forbinde med det originale indhold)
tag1
tag2
tag3

Men hvad hvis der bliver mulighed for at tilføje flere tags efterhånden?
Så kan den jo ikke bruges mere.
Avatar billede hmortensen Nybegynder
04. maj 2007 - 21:11 #12
Du kan lave 3 tabeller:

nuværende:
emneId
tekst

tags:
tagId
tagNavn

emneTags:
emneId
tagId

Så kan du have n antal tags til hvert emne. I tabellen emneTags, skal emneId og tagId være delt primær nøgle, så det samme tag, kun kan tilføjes én gang til hvert emne. Og du vil samtidig undgå redundans, ved kun at have ét af hver tag, og så bare bruge det flere gange.
Avatar billede zurekk Nybegynder
04. maj 2007 - 21:15 #13
Har svært ved at se hvordan det vil fungere.

Når de 3 tags tilføjet af brugeren skal hentes ud, og de 3 mest populære tilføjet af alle brugere :S

Kan godt være jeg ikke fik fat i hvad du mener, men det ser lidt besværgligt ud.

Tror også det vil påvirke hastigheden kraftigt hvis siden bliver besøgt ofte.
Avatar billede hmortensen Nybegynder
04. maj 2007 - 21:20 #14
Ovenstående model er den mest korrekte, og mest benyttede til lignende løsninger, og er meget hurtigere end andre løsninger, da alt arbejdet ligger på database serveren, og kun resultat vil blive sendt tilbage, frem for alt data.
Avatar billede zurekk Nybegynder
04. maj 2007 - 21:25 #15
aha..
Well det må jeg jo prøve så =)

Tak for hjælpen, smidt et svar.

If you don't mind, så har jeg et sidste spørgsmål :D

Hvis jeg har et felt der hedder alternative, som kommer til at have ét id, hvordan finder jeg så de 3 mest filføjet id'er?

Altså

emne:
id
text

artikel:
id
altern

hvis jeg så har 10 artikler, hvordan får jeg så hevet de 4 mest tilføjet alternativer ud?
Ikke de 4 mest tilføjet id'er, men selve emnerne :)
Avatar billede zurekk Nybegynder
05. maj 2007 - 20:47 #16
Du smider bare et svar ^^

Jeg har det med at glemme mine topics herinde efter noget tid, så vil gerne have det lukket :P
Avatar billede zurekk Nybegynder
13. maj 2007 - 14:58 #17
..
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