03. maj 2007 - 21:58Der 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.
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.
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.
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 :)
"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.
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 :(
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.
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.
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.
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.
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.