|
SQL-spørringer
Utgangspunktet for disse sql-eksemplene er at du vil opprette et Combobox-felt eller legge inn en table-lenke som går inn og gjør flere operasjoner mot basen enn den enkleste varianten "vis følgende felt i xx-mappa":
Eksempel:
[table|this|:a+:4|1-20|6:bold:left,7:normal:left|width="100%" border=1 cellspacing=0 cellpadding=2|2]
Skal du spørre mot andre felt enn de som skal vises i sin helhet, avgrense/begrense ut fra andre parametre enn visningsfelt og tema, må du bruke en sql-spørring:
Eksempel:
[table|this|sql|dato>=CURDATE() ORDER BY dato ASC, klokke ASC|2,3,5:normal,4|border=1 cellspacing=0 cellpadding=3 width="100%"|5]
Her spørres det mot et egendefinert felt i databasen, nemlig dato (Det er viktig at skrivemåten er nøyaktig lik den i feltnavnet)
Foruten de feltene du sjøl lager, er det også en del mer eller mindre faste i databasen - avhengig av mappetype. Lurer du, ta kontakt med en Administrators.
Eksempler på "faste" feltnavn som du kan bruke i spørringene dine:
ws_RecordId (sidenr), ws_OwnerId (brukernr), ws_Created (når sida ble laget, dato m/format xxxx-xx-xx), Subject (temanr)
Her er en del praktiske eksempler på spørringer:
Vise poster fra nå-dato (CURDATE) og framover
dato>=CURDATE() ORDER BY dato ASC, klokke ASC
(Resultatet sorteres stigende - først etter dato, så klokkeslett)
Sette et dato"vindu" som postene i mappa skal vises
dato>=CURDATE() and dato<CURDATE() + INTERVAL 15 DAY
(Viser data fra dags dato til og med 14 dager)
Vise bare poster med dato større/mindre enn...
Date>='2004-01-01' eller Date>=20040101
Hvis du oppgir dato som streng, må du huske '-ene rundt uttrykket, mens numerisk dato kjører uten...
Bare poster med et gitt tema vises
(dato>=CURDATE() AND Subject=1096) ORDER BY dato ASC
(Temanummer finner du ved å hente fram temaet i konfigurering og se i adressefelt eller bunntekst)
Legg merke til at når det spørres mot flere felt samtidig, må det være (...) rundt parameterne.
Søke gjennom et felt etter forekomster av en streng
forfatter_ved_instituttet LIKE '%Charlotte%' ORDER BY aar DESC
(Søker etter tekststrengen Charlotte uansett hvor i felten den står)
% før og etter strengen forteller at den kan stå hvor som helst i teksten i feltet. Skal du søke fra starten av feltet eller i slutten - fjerner du %-en foran eller bak strengen.
Tekststrenger skal alltid omgis av '-er. Søker du etter tall, kan du droppe dem.
Søke gjennom et felt etter forekomster av flere ulike strenger
(UndvTermin='2004VÅR' and (emne like 'ANK%' OR emne like 'GRE%' OR emne like 'LAT%')) ORDER BY Emne
Når du skal gjøre slike sammensatte søk, er bruken av parenteser veldig viktig. Skal flere enn ett vilkår oppfylles må det være parentes rundt alle. Og hvis det skal søkes etter flere strenger i samme felt, må det være parentes også rundt disse.
Dagens poster, fra klokkeslett større enn "nå" vises
(dato=curdate() and klokkeslett > NOW()) ORDER BY dato ASC, klokkeslett ASC
(Viser alle poster med dato lik i dag og klokkeslett etter NOW - klokkeslettet på serveren)
Vis bare de første x-antall postene
dato=CURDATE() ORDER BY dato ASC LIMIT 10
(Viser de første 10 forekomstene av poster med dagens dato)
Vis alle postene, men hopp over de x-antall første
dato=CURDATE() ORDER BY dato ASC LIMIT 3,1000
(Det siste tallet i limit-leddet må settes så høyt at du er helt sikker på at du får med deg alle sidene i mappa. Og det første tallet angir hvor mange forekomster som skal hoppes over i visningen)
|