"Allan Schuster Bach" <newskonto@schuster.dk> skrev i en meddelelse
news:bninbj$2v8p$1@news.cybercity.dk...
> > Du giver os ikke mange chancer.
>
> Det er skam også svært at foreklare, men jeg prøver lige igen.
"Det dunkelt sagte, er det dunkelt tænkte" -- tidligere instruktor på
datalogi.
> Tabellen TB_RAM_Klasse er en tabel, der indeholder et klasse system, med
> cirka 18.000 poster. Der er følgende kolonner (som skal benyttes)
>
> Segment Familie Klasse Vare Titel
> 10 0 0 0 Levende dyr og
> plantemateriale og tilbehør og forsyninger
> 14 0 0 0 Papirmaterialer
og
> produkter
> 15 0 0 0 Brændelse
> 15 12 0 0 Smøremidler
> 15 12 18 0 Korrosionshæmmende
> 15 12 18 1 Fugtafviser
> 15 12 18 2 Rustfjerner
> 15 12 18 3 Rustbeskytteelse
>
> Tabellen er statisk, og der ændres ikke i den
>
> I den anden tabel som jeg kalder TB_RAM_SEG , er der følgende kolonner
> Virksomhedid Segment Familie Klasse Vare
> 5 15 12 18 1
> 5 15 12 18 2
> 5 15 11 15 0
>
> Tabellen, indeholder oplysninger om, hvilken vare som den enkelte
virksomhed
> handler med
> Hvis der nu havde stået
> 5 15 0 0 0, så handler virksomheden med Brændelse, og alle
> underliggende kategorier, hvor segment er lige med 15.
> 5 15 12 0 0, Så handler virksomheden med smøremidler, og alle
> underliggende kategorier, hvor segment er 15 og familie er 12.
Så vidt, så godt. Nu har vi vist en forståelse af, hvordan dien data ser d
og hvordan de skal tolkes.
> Hele min ide (opgave), gå ud på, at omsætte disse talværdier, som er gemt
i
> TB_RAM_SEG til tekst.
"Omsætte disse talværdier til tekst" er noget upræcist. Er det ikke netop,
hvad tabellen TB_RAM_Klasse gør?
> Så eksempelvis at 5 15 12 18 1 (den første post i TB_RAM_SEG ), i tekst
> kommer til se sådan ud.
> 5, Brændelse, Smøremidler, Korrosionshæmmende, Fugtafviser
>
> >
> > Du fortæller ikke, hvad den logiske sammenhæng i din database er, og du
> > fortæller os ikke hvorfor du netop ønsker at få de nævnte rækker ud.
>
> Jeg er kommet så langt
> 5 er virksomhedsid (nemt nok)
> 15 er brændelse. Findes ved at både familie, klasse og vare er lig med 0
> 12 er Smøremidler. Findes ved, at segment er 15, familie er 12, klasse og
> vare er lig med 0
> 18 er Korrosionshæmmende. findes ved at segment er 15, familie er 12,
klasse
> er 18 og vare er lig med 0
> 1 er Fugtafviser. Findes ved at segment er 15, familie er 12, klasse er
18
> og vare er 1
>
> Følgende SQL er jeg fremkomet til, men den finder kun segment
>
> CREATE PROCEDURE [dbo].[test]
> @DBvirksomhedsid int
> AS
> SELECT TB_RAM_Klasse.Titel AS Segmentnavn
> FROM TB_RAM_SEG INNER JOIN
> TB_RAM_Klasse ON TB_RAM_SEG.Segment =
> TB_RAM_Klasse.Segment
> WHERE (TB_RAM_SEG.VirksomhedsID = 5) AND (TB_RAM_Klasse.Klasse = '00')
> AND (TB_RAM_Klasse.Vare = '00') AND (TB_RAM_Klasse.Familie = '00')
>
> Men er er jeg også kørt totalt fast
>
> Håber at de var uddybning nok
Nix.
Hvad er dit input (parametrene til din procedure, er det korrekt, at det
skal være virksomhedsid og ikke andet)? Hvad er dit forventede output (et
eksempel på en linie er ikke nok til at giove en forståelse)?
Jeg *tror* at du er ude efter noget i retning af
select distinct
k1.titel as segment_titel
, k2.titel as familie_titel
, k3.titel as klasse_titel
, k4.titel as vare_titel
from tb_ram_seg s
join tb_ram_klasse k1
on s.segment = k1.segment
and k1.familie = '00'
and k1.klasse = '00'
and k1.vare = '00'
join tb_ram_klasse k2
on s.segment = k2.segment
and s.familie = k2.familie
and k2.klasse = '00'
and k2.vare = '00'
join tb_ram_klasse k3
on s.segment = k3.segment
and s.familie = k3.familie
and s.klasse = k3.klasse
and k3.vare = '00'
join tb_ram_klasse k4
on s.segment = k4.segment
and s.familie = k4.familie
and s.klasse = k4.klasse
and s.vare = k4.vare
--
Kristian Damm Jensen
damm (at) ofir (dot) dk