Jeg har en user-tabel, hvor mine brugere er stored i, med et unikt userId i form af en int - så har jeg en gruppe-tabel, hvor der er defineret nogle grupper, som også har en unik gruppeId - disse er linket sammen af en relations-tabel, som har et unikt relId for hver relation, en angivelse af userId og gruppeId - altså for at brugere kan være medlem af flere grupper...
Så langt, så godt...
For det ikke skal være løgn, så har jeg også en projekt-tabel, som er udstyret med et unikt projektId, og som indeholder div. beskrivelser... Denne tabel og gruppe-tabellen danner også grund for en relations-tabel der relatere grupper til projekter...
Så jeg har tre tabeller - en user, en gruppe og en projekt - user og gruppe har en relations-tabel, og gruppe og projekt har en relations-tabel...
Dette skal så joines sammen på en måde, så jeg ud fra et userId, kan få at vide hvilke projekter en bruger er med i - hvordan kan man smide en query op der returnere det...?
nu kender jeg ikke alle dine felter, så jeg gætter mig frem til et resultat:
SELECT A.userID FROM userTable A LEFT JOIN relTable B ON B.relUser = A.userID INNER JOIN projektTable C ON C.projektID = B.relProjekt RIGHT JOIN gruppeTable D ON D.gruppeID = A.userGruppe
Det er i hvertfald principet i det.. er et vildt skud i tågen..
Nu har jeg lavede en mere udførlig query, som arbejde på nogle tabeller der ikke kun fantes inde i mit hoved :-)
SELECT A.userID, A.userNavn, C.projektNavn FROM userTable A LEFT JOIN relTable B ON B.relUser = A.userID LEFT JOIN projektTable C ON C.projektID = B.relProjekt LEFT JOIN gruppeTable D ON D.gruppeID = A.userGruppe
Jeg ved ikke om du er klar på at mysql returnere de rene data, som godt kan virke overskuelige og hvis man ønsker at sætte det op på en bestemt facon skal man bruge en form for front-end.. medmindre du selvfølgelig ønsker at have en rå liste med de angivne data..
Her ser vi at gruppe 2 er linket til projekt 2 og 3, mens projekt 1 er linket til projekt 1, og gruppe 3 er linket til projekt 3...
Det jeg søger er så bare...
Når jeg fyre min statement af...
SELECT ... bla bla bla... WHERE UserId = 1; Så får jeg project-navnene som Martin er med i (han er medlem af gruppe 1, 2 og 3, og skal derfor kunne se de projekter der relateret til de grupper).
Ligesom når jeg fyre samme statement af med WHERE UserId = 2; Så får jeg projektnavnene som Morten er med i (hvilket er projekt 2 og 3, da han er linket til gruppe 2, som er med i projekt 2 og 3)....
Okay, det var jo lidt noget andet, men det kan også sagtens lade sig gøre.. jeg brygger lige en SQL til dig senere i dag.. det er sku for tidligt at skrive SQL'er nu :-)
Men har du tænkt på i hvilket front-end du skal vise og behandle dine udtryk?
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.