webForumDet fria alternativet

SQL Frågor... hjälp

6 svar · 227 visningar · startad av pierre_j

pierre_jMedlem sedan nov. 200218 inlägg
#1

Hejsan.

Jag undrar om det är möjligt att konverera om data i en kolumn till det man själv vill ha. Dvs. Jag har en tabell där jag skall ta ut artnr, pris, beskrivning samt produktgrupper. Jag anger en WHERE sats där produktgrupperna skall hämtas som är mellan 72 & 99 (måste ange 990 varför vet jag inte... men men)

Jag vill inte att produktgrupperna skall visas som siffror utan som namn... tex 99 = Minnen 72 = Hårddiskar 73 = Monitorer osv osv.

Finns det något vis att göra en konvertering direkt i SQL frågan där man anger då alla rader från 72 till 99 vad de skall skrivas ut som i datagriden ??

Min SQL fråga ser ut så här:

-----------------------------------------------------------------------------
SELECT SC01001, SC01002, SC01003, SC01004, SC01037, SC01128
FROM SC010100
WHERE (SC01037 BETWEEN '72' AND '990') AND (SC01128 = '0001')
ORDER BY SC01001
-----------------------------------------------------------------------------

Jag har dragit mig i håret länge över hur detta fungerar samt läst men då jag är ny med detta och inte har kunskaperna så har jag lite svårt att se lösningen.

Eller måste man göra konverteringen efteråt ?? Vad är det som behövs då ?

Någon som har lust att ge en lösning på detta om ni vet hur man gör ?

Tack på förhand.

MVH
Pierre Johansson

Engine^Medlem sedan dec. 20003 887 inlägg
#2

Du väljer ut kolumnen som innehåller namnet... du ska inte ha med SC01037 i din SELECT ..., SC01037,...

Btw... en felpostning det här

pierre_jMedlem sedan nov. 200218 inlägg
#3

Förhandsgranskning:
OK, jag kanske har formulerat mig fel. Denna SELECT FRÅGA fungerar perfekt här hos mig... kolumnamnet SC01037 stämmer och det skall jag ha med men det är posterna som jag vill kunna byta namn på.

De är:

99
98
97
96
osv osv i kolumnen SC01037

Men jag vill kunna konvertera om dem till tex

Minnen ( 99 )
Hårddiskar ( 98 )
osv osv

Hoppas detta förklarar lite bättre hur jag menar.

MVH
Pierre

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Skapa en tabell till med två kolumner ID och NAME

ID ! NAME
------------
99 ! Minnen
98 ! Hårddiskar
97 ! ...

Sen så gör du en join mot den tabellen och väljer ut kolumnen NAME.

pierre_jMedlem sedan nov. 200218 inlägg
#5

OK, tackar. Då är min nästa fråga, hur ser join frågan ut ?

Jag har nämligen en tabell idag där nummer och namn är angivet precis som du har skrivit här ovan, men jag vet inte hur jag JOINAR tabeller. Därav min första fråga i denna tråd... då jag trodde att man kunde konvertera om text direkt i frågan, men kan man joina tabeller så att det blir rätt så är det ju smidigare. Så att de fungerar ihop med varandra och rätt nummer får rätt namn osv.

Har ni lust att ange ett exempel på hur den sql fråga skulle se ut ??

Jag har försökt och läsa mig till hur det funkar men min hjärna förstår inte logiken i det än riktigt.

Stort tack.
MVH
Pierre

LarsGMedlem sedan dec. 200012 464 inlägg
#6
SELECT SC01001, SC01002, SC01003, SC01004,name, SC01128
FROM SC010100 INNER JOIN lookuptable
ON SC010100.SC01037 = lookuptable.id 
WHERE (SC01037 BETWEEN '72' AND '990') AND (SC01128 = '0001')
ORDER BY SC01001

Du behöver bara byta ut de namn som är skrivna med små nokstäver.

pierre_jMedlem sedan nov. 200218 inlägg
#7

Tackar.

Skall testa och se hur det fungerar.

har testat nu men får ett Break fel, vid denna rad under Click kommandot på min knapp för att fylla DataGriden.

--------------------------------------------------------------
Me.SqlDataAdapter.Fill(DataSet11, "SC010100")
--------------------------------------------------------------

Programmet gnäller om att denna rad inte är giltig och den markeras med grön färg. Nu när jag joinat 2 tabeller måste jag då ange ett annat värde än det som står ovanför ???

När jag försökte bygga om frågan med hjälp av SqlDataAdapter wizarden och la in denna fråga... (som bör stämma)

-----------------
SELECT SC010100.SC01001, SC010100.SC01002, SC010100.SC01003, SC010100.SC01004, KOD.NAME, SC010100.SC01128
FROM SC010100 INNER JOIN
KOD ON SC010100.SC01037 = NAME.ID
WHERE (SC010100.SC01037 BETWEEN '72' AND '990') AND (SC010100.SC01128 = '0001')
ORDER BY SC010100.SC01001
--------------------------------------------

så säger wizarden detta fel när jag klickar på NEXT knappen för att gå vidare och skapa koppligen och SQL SELECT frågan.

----------------------------------------------
The column prefix 'NAME' does not match with a table name or alias name used in the query.
---------------------------------------------

Vad kan detta bero på ? Måste de båda tabellerna vara identiska eller ?

Jag skapade en ny tabell som som heter KOD, och i den har jag kolumnerna ID & NAME

Under ID ligger 72, 73, 74, 75 osv osv och i NAME Namnet för respektive.

Någon som har nått tips ?

MVH
Pierre

138 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)