15. december 2011 - 05:11Der er
17 kommentarer og 1 løsning
SQL Produkter med subprodukter
Hej jeg sider og prøver at lave et sql string der skal kun søge i produkter og hvis der er en tillægs produkt på dette skal den også smide den ud til mig
Er det en trykfejl, når du siger, at søger du på 1001 får du kun 2, 1001, CPU? Sådan som jeg forstår tabellerne har 1000 de tre subprodukter 1001, 1002, 1003, men 1001 har ingen subrodukter, så ved søgning på 1001 er det korrekt kun at få CPUen.
Men tillad mig at foreslå at bruge en enkelt tabel hvor du har en ekstra kolonne parent. Jeg lavede denne testtabel:
CREATE TABLE weblis(id INT, nr INT, parent INT, title VARCHAR(10)); INSERT INTO weblis VALUES(1, 1000, 0, 'Computer'); INSERT INTO weblis VALUES(2, 1001, 1, 'CPU'); INSERT INTO weblis VALUES(3, 1002, 1, 'RAM'); INSERT INTO weblis VALUES(4, 1003, 1, 'DISK');
Og med denne query:
SELECT id, nr, title FROM weblis WHERE nr = 1000 UNION SELECT w2.id, w2.nr, w2.title FROM weblis w1 LEFT JOIN weblis w2 ON w1.id = w2.parent WHERE w1.nr = 1000;
fik jeg dette resultat:
id nr title 1 1000 computer 2 1001 CPU 3 1002 RAM 4 1003 DISK
Synes godt om
Slettet bruger
15. december 2011 - 07:15#2
Grunde til jeg lave det i to table er at jeg skal bruge ting flere gang i et par af ting sådan at jeg kan kalde 1001 ud som så måske har et tillæg produkt mere.. men ikke bliver kaldt i 1000..
weblis, hvad er nu din videre hensigt med dette spørgsmål? I dit spørgsmål viser du hvad du får når du søger på 1001, men du forklarer ikke, hvad du forventede at se. Sådan som jeg læser det får du det korrekte resultat ved søgning på 1001. Det forklarede jeg, og for at kunne hjælpe bad jeg om yderligere oplysninger. (Samtidig foreslog jeg, at du forenklede din database struktur, men det var for dig ikke relevant.) Du kom ikke tilbage med yderligere oplysninger (du sagde, at 'den virker ikke..' men det blev jeg ikke klogere af), og du fik ikke indlæg fra anden side.
Hvad er nu din videre hensigt med spørgsmålet? Hvis du stadig er interesseret i løsningsforslag fra min side, så giv lidt mere forklaring, såsom at vise hvilke data du forventede ved søgning på 1001 og hvordan dette forventede resultat kan udledes fra de data du viser. Hvis spørgsmålet ikke længere er aktuelt, så luk det venligtst igen (ved selv at oprette et svar.)
Synes godt om
Slettet bruger
21. december 2011 - 12:18#6
Undskyld jeg forstod på dig du gav op. men jeg prøver da geren fordi jeg gerne vil have løst denne opgave da..
Ide er at jeg skal kun se om der er gebyr på en pågælden vare eller ander udgifter..
eks jeg skal vi mit shop system kun bestille et dotcom domain og da det er en bestilling via nr 1001 så får jeg 1001 Oprettels af .com 1301 årsgebyr på .com
fra min database
men søger jeg på 1301 i min database får jeg kun 1301 årsgebyr på .com
Det er nok mig der er tumpet. Jeg forstår som sagt ikke dit oprindelige spørgsmål, og jeg forstår heller ikke sammenhængen mellem dit oprindelige spørgsmål og dit sidste indlæg.
I dit oprindelige spørgsmål viser du to tabeller med data. I Produkter har du fire linier med produktnumrene 1000, 1001, 1002, og 1003. I ProdukterSub har du tre linier, ProduktNr 1001, 1002, og 1003. Alle tre har ProdukterID = 1. De hører derfor til det produkt der i tabellen Produkter har ProduktID = 1, nemlig produkt 1000. Produkterne 1001, 1002, og 1003 er subprodukter af produkt 1000.
Du sagde, at du vil søge efter produkter med tillægsprodukter. Hvis et tillægsprodukt er det samme som et subprodukt, så er det logisk, at når du søger efter produkt 1000, så skal du få dette:
1,1000,Computer 2,1001,CPU 3,1002,RAM 4,1003,DISK
Men for produkt 1001, med ProduktID = 2, viser du ikke nogen subprodukter. Der er ingen rækker i tabellen ProdukterSub med ProduktID = 2. Når du søger på 1001, så får du 2, 1001, CPU. Det er præcist hvad du ifølge min logik skulle få med de tabeller du viser og de data du viser i tabellerne.
Du forventer åbenbart at få noget mere når du søger på 1001. Kan jeg få dig til at skrive ud hvad du forventer, på samme måde som du skrev ud hvad du får når du søger på 1000? For ellers kan jeg ikke forstå problemet og kan derfor ikke medvirke til at løse det.
Synes godt om
Slettet bruger
21. december 2011 - 14:05#8
problemmer med din opsætning er at der ikke kan være flere der bruger sammen sub produkt.. ellers kun jeg godt bruge den
Jeg spørger hvad du ville have haft i stedet. Ved du ikke hvad du skal svare på det?
Synes godt om
Slettet bruger
21. december 2011 - 15:45#12
Ja jeg vil have sådan at når jeg søger på vare med ProdukterNr 1001 at den så gå i Produkter og henter vare når den så har hente den skal de se i ProdukterSub om der er en vare der har sammen ID og hvis der er skal den hente dem der kommer i Produkter
Når du i Produkter søger på 1000, så får du ProdukterID = 1, og i ProdukterSub er der tre linier med ProduktID = 1. Derfor får du, som du siger, dette:
1,1000,Computer 2,1001,CPU 3,1002,RAM 4,1003,DISK
Når du i stedet søger på 1001, så får du ProdukterID = 2, og fordi der ikke er noget i ProdukterSub med ProdukterID = 2, så får du, som du siger, dette:
2,1001,CPU
Og det er da, ud fra de oplysninger du giver, et korrekt resultat, ikke sandt? Hvis jeg har forstået det forkert, så prøv at skriv ud det resultat der er korrekt når du søger på 1001.
Synes godt om
Slettet bruger
21. december 2011 - 16:09#14
Problemmer er bare jeg kan ikke få ram til at tage anden med hvis jeg kun kalder den via 1002 eller nåd i den sti.. ellers var din ide god nok
Synes godt om
Slettet bruger
21. december 2011 - 16:10#15
jeg kom til at skrive 1000 et sted hvor jeg mente 1001
Ved du hvad, jeg tror du har fået formuleret spørgsmålet uheldigt. Du siger, i realiteten, at når du søger på et produkt skal du have dette produkt plus subprodukter hvis der er nogen. Så viser du to tabeller hvor produkt 1000 har tre subprodukter og produkt 1001 ikke har nogen subprodukter. Derfor skal søgning på 1000, som du siger, give dette resultat:
1,1000,Computer 2,1001,CPU 3,1002,RAM 4,1003,DISK
Søgning på 1001 skal, ifølge tabellerne, give dette resultlat:
2,1001,CPU
men det resultat er du utilfreds med. Du siger, at du KUN får 2,1001,CPU. Det forvirrer mig, og tilsyneladende forvirrer det også alle andre, for du har ikke fået indlæg fra andre. Og jeg tror det også forvirrer dig selv, for du har ikke været i stand til at vise, hvad du ville have haft i stedet for.
Jeg foreslår, at du lukker dette spørgsmål og starter forfra på et nyt og bedre formuleret spørgsmål. Du kan bestemme, om du vil acceptere mit svar som hjælp til bedre at formulere problemet eller om du selv vil oprette et svar og acceptere det.
I dit nye spørgsmål vil jeg foreslå, at du viser de to tabeller med data og forklarer, at du ved søgning på et produkt også vil have produktets subprodukter hvis der er nogen.
Synes godt om
Slettet bruger
05. januar 2012 - 18:08#18
Lukket..
Synes godt om
Ny brugerNybegynder
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.