Avatar billede crapman Nybegynder
22. februar 2005 - 13:30 Der er 8 kommentarer og
1 løsning

En form for replace direkte i mysql-sætning

Heysa,
Jeg har en mysql tabel som indeholder en række produkter. Hvert produkt har et felt kaldet speed_index. Denne indeholder en værdi i form af et bogstav. Eks: M

Hvert bogstav repræsenterer en værdi i form af et tal. For eksempel er M = 130

Jeg har en tabel kaldet var_speedindex som indeholder alle disse værdier (Felter: speedindex, speed_kmh)

Kunden vil gerne have mulighed for at lave et opslag som udvælger alle produkter som har en speedindex mellem 20 og 100 (eksempelvis!)...

Så på en eller anden måde skal jeg kunne lave en sql-sætning som slår op i var_speedindex og finder ud af hvilke bogstaver der er OK, og derefter finder de poster i produkt-tabellen som indeholder et af disse bogstaver...

Men hvordan?

For at gøre det endnu sværere, så kan H godt have en højere værdi end M (Eks: H=300, M=200)

Help me! :)
Avatar billede yellow Nybegynder
22. februar 2005 - 13:56 #1
Har ikke lige en mysql at teste på, men noget i den her retning:

SELECT produkter.*, var_speedindex.speed_kmh  from produkter
INNER JOIN var_speedindex ON produkter.speed_index = var_speedindex.speed_index
WHERE speed_kmh BETWEEN 20 AND 100
Avatar billede crapman Nybegynder
22. februar 2005 - 14:37 #2
Kan man godt have mere end én inner join i en sql sætning, for har allerede en i den sætning dette her skal implementeres i...
Avatar billede yellow Nybegynder
22. februar 2005 - 14:46 #3
Det burde ikke være noget problem
Avatar billede crapman Nybegynder
22. februar 2005 - 15:40 #4
Hmm det virker ikke helt... Sådan ser min sql ud:

SELECT * FROM main_item, item_axle, var_speedindex INNER JOIN var_speedindex ON item_axle.tech_speed_index = var_speedindex.speed_index WHERE main_item.item_no = item_axle.item_no AND main_item.item_type = 'axle' AND main_item.item_group_id LIKE '%%'

og denne fejl får jeg:


[MySQL][ODBC 3.51 Driver][mysqld-4.0.21-nt]Not unique table/alias: 'var_speedindex'
Avatar billede yellow Nybegynder
22. februar 2005 - 16:26 #5
du laver samme join på to forskellige måder...
SELECT * FROM A,B WHERE A.id = B.id
og
SELECT * FROM A INNER JOIN A.id = B.id
gør det samme, så den brokker sig over at du har 2 var_speedindex
Avatar billede yellow Nybegynder
22. februar 2005 - 16:31 #6
...så hvis du holder dig til den ene type join kunne det se sådan her ud:

SELECT * FROM main_item, item_axle, var_speedindex WHERE
item_axle.tech_speed_index = speedindex.speed_index AND
main_item.item_no = item_axle.item_no AND
main_item.item_type = 'axle' AND
main_item.item_group_id LIKE '%%' AND
speedindex.speed_kmh BETWEEN 20 AND 100
Avatar billede crapman Nybegynder
23. februar 2005 - 08:45 #7
Der er sørme point.. det virkede... 2000 tak!
Avatar billede crapman Nybegynder
23. februar 2005 - 08:45 #8
....smid et svar ;)
Avatar billede yellow Nybegynder
23. februar 2005 - 10:01 #9
svar
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
Kurser inden for grundlæggende programmering

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