12. april 2005 - 08:47Der er
12 kommentarer og 1 løsning
Hjælp til at lave udtræk
Jeg har en dynamisk specifikationsliste for et produktkatalog. Det jeg skal for et bestemt produkt er at få en liste over alle specifikationerne der er oprettet og hvilke der er valgt til det specifikke produkt.
Jeg har følgende tabeller
produktSpec ------------- id (pk) specId (fk) variable1 variable2
specifikationsData ------------------ specId (pk) navn
I produktSpec oprettes posten kun hvis der er indtastet noget i variable 1.
Dvs. jeg skal have alle navnene fra specifikationsData, hvis der for den valgte post er oprettet en post i produktSpec skal værdien for variable 1 og variable 2 vises ud for posten.
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
såvidt jeg kan forstå er id et felt på ProduktSpec. Hvis du vil lave forespørgsel på et felt der kun er der en del af tiden, så kan det da godt gå hen og give nogle problemer.
Jeg tror ikke jeg er helt med på hvor du vil hen?!?
Nej det kan nok godt være lidt svært at gennemskue når man ikke ser helheden. Jeg havde også prøvet at forenkle det lidt. Jeg prøver at uddybe det lidt mere.
Ud over de 2 tabeller jeg har nævnt har jeg også en treide tabel:
produkt ------- prodId (pk) navn
produktSpec ------------- id (fk)(pk) specId (fk)(pk) variable1 variable2
specifikationsData ------------------ specId (pk) navn
Jeg vil gerne have et udtræk som det jeg har vist ovenfor, Dette udtræk skal gælde et bestemt produkt
Jeg er glad for at i har kunnet følge min ide på trods af en dårlig formulering fra min side! Men det er ikke altid nemt at sætte ord på hvad det er man vil have :~)
Jeg er nu kommet fra til følgende SQL-sætning der virker som den skal (tror jeg nok)
SELECT s.navn, ps.medtages, ps.medtagesIOversigt FROM underKatSpec ps INNER JOIN specifikationsData s ON ps.specId = s.specId WHERE (ps.underkatId = 19) UNION SELECT navn, NULL, NULL FROM specifikationsData WHERE specId NOT IN (SELECT s.specId FROM underKatSpec ps INNER JOIN specifikationsData s ON ps.specId = s.specId WHERE (ps.underkatId = 19))
Ja jeg kan godt se med det SQL jeg har fået smidt her fatter i vel selt ikke noget af det :-/ Problemet er som jeg har udtrykt før er at det er taget ud af en større helhed, så jeg har omdøbt nogle af tabellerne til dette spørgsmål for at fremme forståelsen.
Så her skulle være noget SQL der passer til de tabeller jeg har vist:
SELECT s.navn, ps.variable1, ps.variable2 FROM produktSpec ps INNER JOIN specifikationsData s ON ps.specId = s.specId WHERE (ps.produktId = 19) UNION SELECT navn, NULL, NULL FROM specifikationsData WHERE specId NOT IN (SELECT s.specId FROM produktSpec ps INNER JOIN specifikationsData s ON ps.specId = s.specId WHERE (ps.produktId = 19))
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.