Avatar billede peleiden Nybegynder
28. oktober 2002 - 11:44 Der er 12 kommentarer og
1 løsning

mysql og forbogstaver

Hej jeg skal vælge et antal queries hvor alle startbogstaverne starter med a - e, også en ny med f - j. Når man så vælger a-e finder den alle som har disse startbogstaver.

Hvordan skal min sql-sætning nogenlunde se ud.
og bliver jeg nødt til at lave en ny sql-sætning for hvert eneste bogstav???

/Peleieden
Avatar billede morw Nybegynder
28. oktober 2002 - 12:19 #1
SELECT id, navn, LEFT(navn, 1) as forbogstav
FROM tabel
WHERE forbogstav IN ('a', 'b', 'c')
Avatar billede punqtured Nybegynder
28. oktober 2002 - 13:27 #2
Ovenstående løsning gør netop hvad du har behov for. Dog kan du i nyere versioner af MySQL bruge regular expressions, så man slipper for at skulle skrive samtlige bogstaver fra a-e, fra f-j osv. Bør være noget i retning af SELECT id, navn LEFT(navn, 1) as forbogstav FROM tabel WHERE forbogstav IN ([a-e]) osv osv osv.
Avatar billede peleiden Nybegynder
28. oktober 2002 - 15:48 #3
Jeg kan ikke få denne sql-sætning til at funke rigtigt.
jeg er ikke lige helt med på om

navn
forbogstav
id

er henholdsvis tabeller eller kolonner???

Altså jeg skal trække de rækker ud fra tabellen tblglossary hvor tblglossay.gloss_overskrift starter med a, b, c...osv???

SELECT id, tblglossary LEFT(gloss_overskrift, 1) as forbogstav FROM tblglossary WHERE forbogstav IN ('a', 'b', 'c')
Avatar billede morw Nybegynder
28. oktober 2002 - 18:24 #4
SELECT id, gloss_overskrift, LEFT(gloss_overskrift, 1) as forbogstav FROM tblglossary WHERE forbogstav IN ('a', 'b', 'c')
Avatar billede morw Nybegynder
28. oktober 2002 - 18:26 #5
SELECT id, gloss_overskrift, LEFT(gloss_overskrift, 1) as forbogstav
FROM tblglossary
WHERE forbogstav REGEXP "[a-e]"
Avatar billede peleiden Nybegynder
28. oktober 2002 - 21:48 #6
Jeg kan sgu ikke få den til at virke. Den melder godt nok ikke fejl i strengen, men det er som om at den ikke kan finde noget i min mysql-db.

den ser således ud:
$query_ae = "SELECT id, gloss_overskrift, LEFT(gloss_overskrift, 1) as forbogstav FROM tblglossary WHERE forbogstav REGEXP '[a-w]'";
Avatar billede morw Nybegynder
28. oktober 2002 - 22:29 #7
aA-wW
Avatar billede peleiden Nybegynder
28. oktober 2002 - 22:33 #8
nope det funker stadig ikke......damn......den der hedder id efter SELECT...SKAL den hedde id eller hvad står den for. noget andet er hvorfor 'forbogstav' skal stå der????
Avatar billede rodehoved Nybegynder
28. oktober 2002 - 22:55 #9
select * from <tabelnavn> where left(<kolonnenavn>,1) IN ('a','b','c', <osv.>);

Ovenstående statement vil give en liste over samlige inputs i tabellen, som starter med de angivne bogstaver.
Ud fra hvad du skriver, kan det se ud som om du skal skrive:
select * from tblglossary where left(gloss_overskrift,1) IN ('a','b','c','d','e');
Det skulle så give dig en liste fra a - f.
Avatar billede morw Nybegynder
28. oktober 2002 - 22:59 #10
Her er den:

SELECT id, gloss_overskrift, LEFT(gloss_overskrift, 1) as forbogstav
FROM tblglossary
HAVING forbogstav REGEXP "[a-e]"
Avatar billede morw Nybegynder
28. oktober 2002 - 23:01 #11
Når man laver en variable - her forbogstav skal man bruge HAVING i stedet for WHERE.

Du kan godt kalde den noget andet en forbogstav, det betyder intet
Avatar billede morw Nybegynder
28. oktober 2002 - 23:03 #12
Det undre mig i øvrigt at du sagde at den ikke meldte fejl. Når man bruger WHERE skal den sige at forbogstav ikke er kendt. Sikker på du cheker rigtigt for fejl?
Avatar billede peleiden Nybegynder
05. december 2002 - 22:32 #13
ups jeg har vist glemt pointene...

dette funker

$query_ae = "select * from tabel where left(gloss_overskrift,1) IN ('a','b','c','d','e')";
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