Avatar billede Slettet bruger
06. august 2011 - 19:37 Der er 10 kommentarer og
1 løsning

List af bruger under kunde

Hej jeg er ved at lave et lille script og skal bruge lidt hjælp til nåde sql..

ide er jeg har et table med kunde og en med bruger
når jeg så viser alle kunder vil jeg gerne have bruge under kunder

(Customer)
CustomerID
CustomerName

(Customer_bruger)
brugerID
CustomerID
brugernavn

og vil gerne have det på denne måde

CustomerID | CustomerName | Bruger
        1 | Demo        | Hans, Line, Mads
        2 | Test        | Demo, Admin

Håber der er en der kan hjælpe mig..
Avatar billede claes57 Ekspert
06. august 2011 - 20:11 #1
du bør dele det op i 3 tabeller
(Customer)
CustomerID
CustomerName

(Bruger)
brugerID
brugernavn

(relationer)
CustomerID
brugerID
Avatar billede Slettet bruger
06. august 2011 - 20:19 #2
? Hvorfor kan man ikke bare have det i en table ?
samt hvordan laver jeg kode til den sådan at jeg får min bruger ud sammen med kunde ?
Avatar billede claes57 Ekspert
06. august 2011 - 20:37 #3
det hedder redundans - og på dansk er det - tast aldrig samme ting ind to gange.
hvis du har en kunde Per, og han har bruger Jens og Hans
og samtidig en kunde Ole med bruger Jens og Kurt
hvis nu Jens ville have nyt navn, så skal du rette i alle poster, hvor Jens er nævnt.
Valgte du en opbygning som mit forslag, så skal du kun rette et sted (bruger), og det virker hele vejen rundt.
06. august 2011 - 20:37 #4
claes57, jeg ville være enig med dine foreslåede tre tabeller, hvis der er en mange-til-mange relation mellem customers og brugere, altså hvis en enkelt bruger kan høre til adskillige customers.  Men sådan som jeg har forstået det (webiis, ret mig, hvis jeg tager fejl), så kan en customer have mange brugere, men hver bruger hører kun til en customer.  I så fald  synes webiis's to tabeller at være optimal.

webiis, hvordan forespørger du databasen og hvordan skriver du resultatet ud?  I en php applikation eller hvad?  Jeg kender ikke nogen måde til direkte i mysql at få dit ønskede resultat (måske er nogen klogere end jeg).  Udskriften er typisk en opgave for applikationen.  Fortæl mere, så kan vi køre videre.
Avatar billede arne_v Ekspert
06. august 2011 - 20:41 #5
Det normale er at bruge en helt simpel join:
  SELECT * FROM customer JOIN customer_bruger ON customer.customerid JOIN customer_bruger_customerid
og lade applikationen vise flere raekker som enkelt raekke.

For rent SQL har MySQL en udvidelse til standard SQL:
  http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_group-concat

Du skal bruge claes'es tabel stryktur, hvis en bruger kan vaere tilknyttet flere kunder.
06. august 2011 - 20:44 #6
claes57, du fyrede #3 af mens jeg skrev #4.  Du synes at bekræfte, at du går ud fra en mange-til-mange relation, altså hvor for eksempel bruger Jens er bruger både hos kunde Per og kunde Ole.  Som sagt, hvis det er tilfældet, så giver jeg dig ret, men hvis i dataerne en bruger altid kun hører til en enkelt kunde, så er tre-tabels løsningen ikke nødvendig ifølge de gængse principper for normalisering.

Men det er stadig et sidespor.  Spørgsmålet var, hvordan man får den ønskede udskrift, og det afhænger ifølge mig af hvad applikation man bruger.
Avatar billede Slettet bruger
07. august 2011 - 00:17 #7
Hej alle sammen, for det første har jeg ikke brug for at flere kunder skal have fadt på denne give bruger men jeg ved ikke om det så er vigtigt at jeg har tre tabeler for at lave dette..

mit første script virker næste og så ikke helt..
SELECT *,(SELECT UserName FROM Company_User WHERE CompanyID=Company.CompanyID) as UserList FROM Company WHERE 1

den virker kun når der er max en post, og den kan ikke sætte et ", "

så har jeg prøve GROUP_CONCAT( men den kan jeg slet ikke få til at virker.. håber i kan hjælpe mig..
Avatar billede Slettet bruger
07. august 2011 - 00:18 #8
Christian_Belgien > Jeg arbejder i asp og VB6
Avatar billede Slettet bruger
07. august 2011 - 00:38 #9
Jubii jeg fandt ud af det med GROUP_CANCAT takker for jeres hjælpe..
07. august 2011 - 05:14 #10
Jamen det var skønt du fik det løst.  Lukker du spørgsmålet?
Avatar billede arne_v Ekspert
11. september 2011 - 23:33 #11
et svar for GROUP_CONCAT
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
Computerworld tilbyder specialiserede kurser i database-management

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