Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [MySQL] Meerdere joins uit 1 table (https://forum.scholieren.com/showthread.php?t=732630)

dafelix 27-01-2004 08:48

[MySQL] Meerdere joins uit 1 table
 
ik zit (letterlijk) met een probleempje, ik ben bezig met m'n eigen forum(pje) te maken, en ik ben vrij nieuw in PHP en MySQL. maar ik moet zeggen dat hij tot nu toe best aardig gaat, maar nu stuit ik op 1 probleempje

Code:

SELECT
 fsubfora.ID,
 fsubfora.name,
 fsubfora.description,
 lusers.username As mod1

FROM fsubfora
 LEFT JOIN lusers ON fsubfora.mod1 = lusers.ID

Deze query heb ik gemaakt (deze werkt prima btw), maar nu wil ik mod2 uitlezen, maar dit werkt niet. fsubfora.mod1 en fsubfora.mod2 zijn integers, die gekoppeld moeten worden met een ID uit de gebruikerstabel (lusers). Ik dacht simpel:

Code:

LEFT JOIN lusers ON fsubfora.mod2 = lusers.ID
toe te voegen, maar dat werkt dus niet (Not unique table/alias: 'lusers'), maar hoe moet dit nu wel?

tia

Manuzhai 27-01-2004 09:35

FROM lusers AS la, lusers AS lb, fsubfora AS sub

Waarmee je sort of twee verschillende instanties van die tabel gebruikt, je kan dan de info van twee verschillende gebruikers te pakken krijgen uit je lusers-tabel naar aanleiding van gegevens in je fsubfora.

dafelix 27-01-2004 11:44

dankjewel :) ik heb nu de volgende query:

Code:

SELECT
 fsubfora.ID,
 fsubfora.name,
 fsubfora.description,
 l1.username AS mod1,
 l2.username AS mod2
FROM fsubfora
 LEFT JOIN lusers l1 ON fsubfora.mod1 = l1.ID
 LEFT JOIN lusers l2 ON fsubfora.mod2 = l2.ID

En werkt prima (y)

Chimera 27-01-2004 12:16

Je DB ontwerp is wel fout trouwens, je kunt op deze manier maar 2 mods hebben. Je zou een aparte authorisatietabel moeten hebben met verschillende authorisatietypes.

dafelix 27-01-2004 12:42

Citaat:

Chimera schreef op 27-01-2004 @ 13:16:
Je DB ontwerp is wel fout trouwens, je kunt op deze manier maar 2 mods hebben. Je zou een aparte authorisatietabel moeten hebben met verschillende authorisatietypes.
3 eigenlijk ;)

ik weet het, het is niet goed opzich, maar dat maakt voor mijn forum niet uit. Aan het maximum van 3 mods zal ik toch niet komen, toch moet ik je gelijk geven dat het veel beter kan. bedankt voor je tip (y)

Chimera 27-01-2004 12:55

Een dergelijke authorisatietabel heb je toch nodig voor bans e.d. Die tabel ziet er ongeveer zo uit:

id - autonumber id
type - auth type (read/mod/ban etc.)
auth_object - id van het object (/user) waarvoor deze auth geldt.
auth_target - id van het object (forum, functie) waarop deze auth van toepassing is.

Kun je met 1 tabel ongeveer alle authorisatietypen afhandelen, en je kunt het beter nu goed doen dan dat je er later achter komt dat jouw setup niet werkt.

Fade of Light 27-01-2004 12:58

als je php wil leren en gewoon een forum in elkaar knikkert dat toch niet echt gebruikt gaat worden (of niet erg actief), dan boeit het niet.

(lees: php leren, niet php en mysql/database ontwerpen)

Chimera 27-01-2004 14:53

Citaat:

Fade of Light schreef op 27-01-2004 @ 13:58:
als je php wil leren en gewoon een forum in elkaar knikkert dat toch niet echt gebruikt gaat worden (of niet erg actief), dan boeit het niet.

Hij moet het helemaal zelf weten, ik geef 'em alleen een (beter) alternatief.

Lethalis 27-01-2004 18:48

Citaat:

Fade of Light schreef op 27-01-2004 @ 13:58:
als je php wil leren en gewoon een forum in elkaar knikkert dat toch niet echt gebruikt gaat worden (of niet erg actief), dan boeit het niet.

(lees: php leren, niet php en mysql/database ontwerpen)

Als je PHP ooit serieus wil gaan gebruiken kom je er niet omheen om ook SQL te leren. Daarnaast is het ontwerpen juist het belangrijkste bij het programmeren.

Kortom: als je iets wil leren, doe het dan goed.

dafelix 27-01-2004 18:56

allemaal bedankt voor jullie reacties, natuurlijk is het beter om het je goed aan te leren, i know

maar het is allemaal nog zo nieuw voor mij, ik begin liever iets lager zodat ik alles doorheb, dan ik loop te zwoegen op iets waar ik de ballen van begrijp. Zo vindt ik het altijd makkelijker te leren

Fade of Light 27-01-2004 19:33

Citaat:

******** schreef op 27-01-2004 @ 19:48:
Als je PHP ooit serieus wil gaan gebruiken kom je er niet omheen om ook SQL te leren. Daarnaast is het ontwerpen juist het belangrijkste bij het programmeren.

Kortom: als je iets wil leren, doe het dan goed.

Je hoeft per opdracht niet meteen 'zoveel mogelijk zooi' leren. Als hij php wil leren en dat denkt te kunnen door aan te klooien met een forum, dan voldoet een slecht database ontwerp. Als hij php dan onder de knie heeft kan hij (my)sql gaan leren. Direct zoveel mogelijk in 1 keer leren, heeft niet altijd meer nut, omdat je door de bomen het bos niet meer kan gaan zien, of dat je niet zoveel tijd hebt, of dat je je interesse in de opdracht kwijt bent en uiteindelijk nog geen php hebt geleerd :P


Citaat:

Chimera schreef op 27-01-2004 @ 15:53:
Hij moet het helemaal zelf weten, ik geef 'em alleen een (beter) alternatief.
dat is ook helemaal neit verkeerd, mogelijk alleen iets opdringerig over ;) goed advies is eigenlijk altijd welkom, dus mijn commentaar is eigenlijk niet goed :) *neemt het terug*

Enlightenment 27-01-2004 23:52

Ik vind het geen probleem als iemand een mogelijk beter alternatief aanbiedt, mits dat natuurlijk op normale manier gebeurt. Waren daar maar meer mensen van. :)

Je kunt er namelijk veel van leren, al doe je het nu niet, misschien in de toekomst wel.

eXo 28-01-2004 01:22

Chimera, stel je hebt deelfora zoals hier, met op elk forum verschillende mods, hoe zou jij dat oplossen?

** enlight: deze vraag mag je via PM aan hem vragen, nu verder on-topic

Chimera 28-01-2004 09:00

Citaat:

eXo schreef op 28-01-2004 @ 02:22:
Chimera, stel je hebt deelfora zoals hier, met op elk forum verschillende mods, hoe zou jij dat oplossen?

Voor elke authorisatie heb je een entry, dus als je 2 fora hebt met elk 3 mods heb je 6 'moderator' entries.

(On-topic lijkt me)

Enlightenment 28-01-2004 11:32

Oeps, sorry, verkeerd geïnterpreteerd. :)

Nevermind eXo.


Alle tijden zijn GMT +1. Het is nu 04:16.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.