Avatar billede rix Praktikant
17. august 2012 - 14:31 Der er 16 kommentarer og
1 løsning

Mysqli søg i to tabeler

Hej

hvis man nu har to tabeler (lille eks.

medlem
id|brugernavn|password

gruppe
brugerid|gruppenavn

hvis man så ville lave f.eks en liste over medelemmer og ville sammentidig have brugerens grupper vist findes der en fiks metode til det eller skal jeg først finde alle brugerne og så søge efter grupperne ??
Avatar billede claes57 Ekspert
17. august 2012 - 14:48 #1
du skal fra starten lave tabeller bedre - i 3:
medlem
m_id|brugernavn|password

gruppe
g_id|gruppenavn

gruppemedlem
id|m_id|g_id
Avatar billede rix Praktikant
17. august 2012 - 15:37 #2
Hej claes57

Det var kun en nem eksempel min tabel er noget alá
member
id|user|pass|email|

member_group
u_id|ansog_id|com_id

ansog
id|name| osv.
Avatar billede olebole Juniormester
17. august 2012 - 16:41 #3
<ole>

#2: Det er, såvidt jeg kan se, en tilgang, der er ret forskellig fra claes57's. Det kommer lidt an på, hvad meningen med tabellerne er - og hvad de indeholder.

Tabellen 'gruppemedlem' i Claes' eksempel bruges kun til at relatere de to andre tabeller. Den skal ikke indeholde egentlige data

/mvh
</bole>
17. august 2012 - 17:13 #4
rix17172, drejer spørgsmålet sig simpelt hen om hvordan man joiner to tabeller (uanset hvad nu indholdet i tabellerne måtte være?)  I så tilfælde, hvis du med dine to tabeller (der som allerede nævnt ikke er stillet ideelt op, men det var ikke dit spørgsmål i denne omgang) vil have alle medlemmer med id, brugernavn, password, og gruppe, så kan det gøres, for eksempel, således:

SELECT medlem.id, medlem.brugernavn, medlem.password, gruppe.gruppenavn
FROM medlem
JOIN gruppe ON medlem.id = gruppe.brugerid

Som allerede antydet bør kikke videre på hvordan man strukturerer relationelle databaser.  Der er masser af tutorials på nettet og hjælp (til selvhjælp) at hente her på forummet.
Avatar billede olebole Juniormester
17. august 2012 - 17:23 #5
- og så skal du huske at bruge passende foreign keys, så dine søgninger på tværs af tabeller er indekseret
Avatar billede rix Praktikant
17. august 2012 - 23:28 #6
Der er en ting jeg ikke forstår.

u_id|ansog_id|com_id

u_id er bruger id.

ansog_id er en af de ansøgnings mugligheders id som man skal have tilladese til at se

com_id er hvilken del af ansognings muglihed man skal have tilladelse til.


ansog
er alt data omkring ansognings mugligheder.

member
er alt data omkring brugeren. id password osv.

så member_group bruges udelukkende til at finde ud af hvad brugeren har adgang til og hvad han ikke har adgang til.
18. august 2012 - 07:09 #7
rix17172, lad os antage, at du har tre members, Jens, Hans, og Sven.  Samtidig har du tre ansøgningstyper, Ansøgning1, Ansøgning2, og Ansøgning3.  Jens skal kunne se alle tre typer, Hans type 1 og 2, og Sven type2.  Det kan du vise i den følgende tabel:

Jens Ansøgning1
Jens Ansøgning2
Hans Ansøgning1
Sven Ansøgning2
Hans Ansøgning2
Jens Ansøgning3

Men hvis du nu har hundrede members og tyve ansøgningstyper, så ville du hurtigt tabe overblikket med en tabel som ovenstående.  Når man skal holde styr på en mange-til-mange relation, hvordan for eksempel mange ansøgningstyper relaterer til mange personer, så laver man en tabel for members, en tabel for ansøgningstyper, og en tabel for relationen derimellem.  Her er et simpelt eksempel med ovenstående data. 

member
id navn
1 Jens
2 Hans
3 Sven

ansøg
id navn
1 Ansøgning1
2 Ansøgning2
3 Ansøgning3

member_ansøg
u_id ansog_id
1      1
1      2
1      3
2      1
2      2
3      2

Her kan du, og et database-system, nemt se, at member1 har ansøg 1, 2, og 3, member 2 har ansøg 1 og 2, og member3 har ansøg 3.

Hvis du så, for eksempel, vil se navnene på de members der har adgang til ansøgningstype 1 kan du forespørge således:

SELECT navn
FROM member
JOIN member_ansøg ON member.id = member_ansøg.m_id
JOIN ansøg ON member_ansøg = ansøg.id
WHERE ansøg.navn = 'Ansøgning1'

Resultatet af den forespørgsel vil være:
Jens
Hans

I #2 viser du ud over u_id og ansog_id også com_id.  Det kunne tyde på, at du har en tredje tabel som du ikke viser.

(Dette eksempel er ment udelukkende som et 'starter' eksempel.  Hvis du skal sætte en funktionerende database op skal du, som der er gjort opmærksomt på, også lære om indeksering og andre ting.)
Avatar billede rix Praktikant
20. august 2012 - 16:43 #8
hej sry jeg ikke har svaret men travlt weekend :)

Nej com_id er en form for hvor meget man har lov til at se.
den kan kun være 1 eller 2.
1 betyder at man kun har adgang til det mest nødvændige. og 2 betyder alt. en bruger kan ikke have 1 og 2 sammentidig så derfor har jeg valgt det på denne måde.

Jeg tror hellere ikke i har forstået hvordan jeg har sat det op.

jeg har 3 tabler.

en table med data omkring brugeren.

en table med ansøgnings data.

og en table med tilladelser.

tablen kunne som i selv siger kun indeholde 2 felter nemlig
bruger_id|ansøgnings_id.

jeg har vaglt da jeg havde en behov for at gøre en person som leder for en enkelt ansønging at lave en 3 felt nemlig com_id.

og der skul kun være 1 tal i nemlig 1 eller 2 1 er nomal bruger.
der er føglende mugligheder.
1 se ansøgning.
2 skriv en post i intern dialog.
3. stemme om optagelse.
4. skriv en post i ekstern dialog med brugeren.

2 (leder) skal have de samme rettigheder som tallet 1 og
1. ændre data for ansøgningen
2. oprette en ny ansøgning.
3. tilføjere og fjerne medlemmer.
4. acceptere ny medlem.
22. august 2012 - 17:19 #9
Jeg reagerer fra mit feriested i Egypten, fra en internetcafe med meget begraenset funktionaliget.  Du bekraefter, hvad jeg formodede fra dit indlaeg #6 og sagde i mit #7, at du har tre tabeller.  Men det staar mig ikke klart hvad det er for et problem d soeger hjaelp til.  Hvad er problemet?
Avatar billede olebole Juniormester
22. august 2012 - 18:10 #10
@Christian: Jeg er sikker på, den samlede danske underverden takker behørigt for dén oplysning  *o)
Avatar billede arne_v Ekspert
26. august 2012 - 04:34 #11
Mener du at de vil koere til Belgien for at begaa indbrud?
Avatar billede olebole Juniormester
26. august 2012 - 13:35 #12
@Arne: Nu har vores tidligere håndbold-es Janne Kolding jo boet og spillet mange andre steder end lige i Kolding - men det kan selvfølgelig være, du ved noget, jeg ikke ved  =)
Avatar billede arne_v Ekspert
26. august 2012 - 15:50 #13
Christian har ved forskellige lejligheder givet udtryk for at han bor i Belgien.
Avatar billede olebole Juniormester
26. august 2012 - 16:09 #14
Okay, den var så glippet for mig. Så har du nok ret i, at der ikke er den store risiko for at invitere til indbrud her  =)
28. august 2012 - 05:30 #15
rix17172, med hensyn til DIT spørgsmål, så giv genlyd.  Hvis spørgsmålet ikke længere er aktuelt, så luk det venligst igen.  Hvis det stadig er aktuelt, så kom ind og forklar (eftersom mine tidligere indlæg åbenbart ikke ramte det) hvad det er for et problem du prøver at løse, hvad det er du vil opnå men ikke kan.
Avatar billede rix Praktikant
29. august 2012 - 12:59 #16
Christian_Belgien.
Grunden til jeg ikke helt har svaret er fordi jeg har leget med din eks. i #4 som jeg lige har fået til at virke.
Mnage tak hvis du ville have poit så lig en svar :)
29. august 2012 - 13:35 #17
Svar fra mig.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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