|
| Første bogstav Fra : Nikolaj Svendsen |
Dato : 14-01-08 16:05 |
|
Hej
Er det muligt, at hente ud fra mysql, sådan at første bogstav er mellem
f.eks a-h.
| |
Peter Brodersen (14-01-2008)
| Kommentar Fra : Peter Brodersen |
Dato : 14-01-08 17:44 |
|
On Mon, 14 Jan 2008 16:04:51 +0100, "Nikolaj Svendsen"
<nes@logtech.dk> wrote:
>Er det muligt, at hente ud fra mysql, sådan at første bogstav er mellem
>f.eks a-h.
Du kan bruge et såkaldt regulært udtryk:
SELECT navn FROM tabel WHERE name REGEXP '^[a-h]'
--
- Peter Brodersen
Kendt fra Internet
| |
Nikolaj Svendsen (14-01-2008)
| Kommentar Fra : Nikolaj Svendsen |
Dato : 14-01-08 18:49 |
|
"Peter Brodersen" <usenet2007@ter.dk> skrev i en meddelelse
news:478b913b$0$90262$14726298@news.sunsite.dk...
> On Mon, 14 Jan 2008 16:04:51 +0100, "Nikolaj Svendsen"
> <nes@logtech.dk> wrote:
>
>>Er det muligt, at hente ud fra mysql, sådan at første bogstav er mellem
>>f.eks a-h.
>
> Du kan bruge et såkaldt regulært udtryk:
>
> SELECT navn FROM tabel WHERE name REGEXP '^[a-h]'
>
> --
> - Peter Brodersen
> Kendt fra Internet
Tusinde tak for for hjælpen.
| |
Carsten Pedersen (15-01-2008)
| Kommentar Fra : Carsten Pedersen |
Dato : 15-01-08 10:51 |
|
Peter Brodersen wrote:
> On Mon, 14 Jan 2008 16:04:51 +0100, "Nikolaj Svendsen"
> <nes@logtech.dk> wrote:
>
>> Er det muligt, at hente ud fra mysql, sådan at første bogstav er mellem
>> f.eks a-h.
>
> Du kan bruge et såkaldt regulært udtryk:
>
> SELECT navn FROM tabel WHERE name REGEXP '^[a-h]'
>
Hvis navn er indekseret, vil flg. være bedre:
SELECT navn
FROM tabel
WHERE name >= 'a' AND name < 'g'
- så søges der kun i de rækker hvor navnet vitterligt starter med
a-h. (Peters løsning vil scanne samtlige rækker i tabellen).
/ Carsten
| |
Nikolaj Svendsen (15-01-2008)
| Kommentar Fra : Nikolaj Svendsen |
Dato : 15-01-08 14:22 |
|
"Carsten Pedersen" <carsten_at_bitbybybit_dk@example.com> skrev i en
meddelelse news:478C81FA.2050308@example.com...
> Peter Brodersen wrote:
>> On Mon, 14 Jan 2008 16:04:51 +0100, "Nikolaj Svendsen"
>> <nes@logtech.dk> wrote:
>>
>>> Er det muligt, at hente ud fra mysql, sådan at første bogstav er mellem
>>> f.eks a-h.
>>
>> Du kan bruge et såkaldt regulært udtryk:
>>
>> SELECT navn FROM tabel WHERE name REGEXP '^[a-h]'
>>
>
> Hvis navn er indekseret, vil flg. være bedre:
>
> SELECT navn
> FROM tabel
> WHERE name >= 'a' AND name < 'g'
>
> - så søges der kun i de rækker hvor navnet vitterligt starter med
> a-h. (Peters løsning vil scanne samtlige rækker i tabellen).
>
> / Carsten
Kan ikke få det til at virke.
$query = mysql_query("SELECT * film_titel FROM film WHERE film_titel >=
'$tal_1' AND film_titel < '$tal_2' ORDER BY film_titel ASC limit $vis_fra,
$pr_side") or die(mysql_error());
Warning: mysql_result(): supplied argument is not a valid MySQL result
resource in /home/www/minside/test.php on line 31
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'SELECT FROM film
WHERE film_titel >= 'A' AND film_titel < 'E' ORDER BY film_tite' at line 1
| |
Martin (15-01-2008)
| Kommentar Fra : Martin |
Dato : 15-01-08 16:26 |
|
Nikolaj Svendsen wrote:
> Kan ikke få det til at virke.
>
> $query = mysql_query("SELECT * film_titel FROM film WHERE film_titel >=
> '$tal_1' AND film_titel < '$tal_2' ORDER BY film_titel ASC limit $vis_fra,
> $pr_side") or die(mysql_error());
fjern film_titel i din select
| |
Nikolaj Svendsen (15-01-2008)
| Kommentar Fra : Nikolaj Svendsen |
Dato : 15-01-08 16:57 |
|
"Martin" <maaNO@SPAMscandesigns.dk> skrev i en meddelelse
news:478cd06d$0$90266$14726298@news.sunsite.dk...
> Nikolaj Svendsen wrote:
>> Kan ikke få det til at virke.
>>
>> $query = mysql_query("SELECT * film_titel FROM film WHERE film_titel >=
>> '$tal_1' AND film_titel < '$tal_2' ORDER BY film_titel ASC limit
>> $vis_fra, $pr_side") or die(mysql_error());
>
> fjern film_titel i din select
Havde jeg også prøvet det gir den samme fejl
| |
Jesper Juul-Mortense~ (15-01-2008)
| Kommentar Fra : Jesper Juul-Mortense~ |
Dato : 15-01-08 17:32 |
|
On Tue, 15 Jan 2008 14:22:23 +0100, "Nikolaj Svendsen"
<nes@logtech.dk> wrote:
>ORDER BY film_tite' at line 1
Er det en copy/paste/tastefejl at der mangler et l i film_titel?
/Jesper
| |
Nikolaj Svendsen (15-01-2008)
| Kommentar Fra : Nikolaj Svendsen |
Dato : 15-01-08 17:49 |
|
"Jesper Juul-Mortensen" <na@na.invalid> skrev i en meddelelse
news:8p3v55-hnq.ln1@news.frostbyte.dk...
> On Tue, 15 Jan 2008 14:22:23 +0100, "Nikolaj Svendsen"
> <nes@logtech.dk> wrote:
>
>>ORDER BY film_tite' at line 1
>
> Er det en copy/paste/tastefejl at der mangler et l i film_titel?
>
> /Jesper
Ja det er det
| |
Jesper Juul-Mortense~ (15-01-2008)
| Kommentar Fra : Jesper Juul-Mortense~ |
Dato : 15-01-08 22:02 |
|
On Tue, 15 Jan 2008 17:49:14 +0100, "Nikolaj Svendsen"
<nes@logtech.dk> wrote:
>> Er det en copy/paste/tastefejl at der mangler et l i film_titel?
>>
>Ja det er det
Ok, det ville bare være ærgeligt hvis det var der fejlen lå gemt
/Jesper
| |
Leif Neland (15-01-2008)
| Kommentar Fra : Leif Neland |
Dato : 15-01-08 18:05 |
|
Nikolaj Svendsen skrev:
>
> $query = mysql_query("SELECT * film_titel FROM film WHERE film_titel >=
> '$tal_1' AND film_titel < '$tal_2' ORDER BY film_titel ASC limit $vis_fra,
> $pr_side") or die(mysql_error());
>
>
>
> Warning: mysql_result(): supplied argument is not a valid MySQL result
> resource in /home/www/minside/test.php on line 31
> You have an error in your SQL syntax; check the manual that corresponds to
> your MySQL server version for the right syntax to use near 'SELECT FROM film
> WHERE film_titel >= 'A' AND film_titel < 'E' ORDER BY film_tite' at line 1
>
>
Hvis du bruger
.... or die("Error at query: <br>".$query."<br><br>".mysql_error())
Så kan man se, hvad MySql faktisk bliver fodret med i stedet for hvad du
tror...
Der er ihvertfald gået noget galt i copy/paste, fordi du i php skriver
SELECT * film_titel FROM
og i fejlmeddelelsen
SELECT FROM
Begge dele er forkert, rigtige muligheder er
SELECT * FROM eller SELECT film_titel FROM
Leif
| |
Nikolaj Svendsen (15-01-2008)
| Kommentar Fra : Nikolaj Svendsen |
Dato : 15-01-08 18:10 |
|
"Leif Neland" <leif@neland.dk> skrev i en meddelelse
news:478ce7b4$0$15876$edfadb0f@dtext01.news.tele.dk...
> Nikolaj Svendsen skrev:
>
>>
>> $query = mysql_query("SELECT * film_titel FROM film WHERE film_titel >=
>> '$tal_1' AND film_titel < '$tal_2' ORDER BY film_titel ASC limit
>> $vis_fra, $pr_side") or die(mysql_error());
>>
>>
>>
>> Warning: mysql_result(): supplied argument is not a valid MySQL result
>> resource in /home/www/minside/test.php on line 31
>> You have an error in your SQL syntax; check the manual that corresponds
>> to your MySQL server version for the right syntax to use near 'SELECT
>> FROM film WHERE film_titel >= 'A' AND film_titel < 'E' ORDER BY
>> film_tite' at line 1
> Hvis du bruger
> ... or die("Error at query: <br>".$query."<br><br>".mysql_error())
>
> Så kan man se, hvad MySql faktisk bliver fodret med i stedet for hvad du
> tror...
>
> Der er ihvertfald gået noget galt i copy/paste, fordi du i php skriver
> SELECT * film_titel FROM
> og i fejlmeddelelsen
> SELECT FROM
>
> Begge dele er forkert, rigtige muligheder er
> SELECT * FROM eller SELECT film_titel FROM
>
> Leif
Oki min fejl jeg tror, bare jeg holder mig til min første løsning.
| |
Peter Brodersen (15-01-2008)
| Kommentar Fra : Peter Brodersen |
Dato : 15-01-08 18:15 |
|
On Tue, 15 Jan 2008 10:50:50 +0100, Carsten Pedersen
<carsten_at_bitbybybit_dk@example.com> wrote:
>Hvis navn er indekseret, vil flg. være bedre:
>
>SELECT navn
>FROM tabel
>WHERE name >= 'a' AND name < 'g'
>
>- så søges der kun i de rækker hvor navnet vitterligt starter med
>a-h. (Peters løsning vil scanne samtlige rækker i tabellen).
Yeps (går ud fra at du mener name < 'i' )
Dog, hvis der skal scannes så store områder, så vil MySQL sikkert
alligevel foretage et fuldt table scan, fordi det kan være lige så
hurtigt som at skulle krydstjekke med et index.
Vi kan håbe på, at MySQL-folkene får lagt nogle optimeringer ind, så
regulære udtryk, der matcher i starten af strengen og LEFT() omskrives
til udtryk, der kan benytte indexes.
--
- Peter Brodersen
Kendt fra Internet
| |
|
|