Hallo, wij hebben een school-opdracht om een systeem te maken voor docenten om opdrachten uit te wisselen. Uiteraard hebben we ook een zoekformulier om op opdrachten te zoeken. En ik wil graag bij de resultaten de bijbehorende vakken geven als resultaat. Alleen is er het probleem dat er bij 1 opdracht meerdere vakken kunnen horen. Dit wou ik dus samenvoegen als 1 string, gescheiden door comma's omdat het zo toch wordt weergegeven bij het resultaat.
Na even zoeken kwam ik erachter dat de functie GROUP_CONCAT daarvoor was, maar aangezien de server waar het op MOET draaien mysql 3.23 heeft bestaat die functie niet. Nu heb ik een functie gevonden die GROUP_CONCAT simuleerd namelijk:
Ik weet alleen niet hoe ik verder moet. Dit is de huidige Query ( Zwaar versimpeld, maar geldig voor de vraag ) en je moet SAMENGEVOEGD dus vervangen door de functie, maar hoe??
Dit is de dblayout ( Ook versimpeld ):
Na even zoeken kwam ik erachter dat de functie GROUP_CONCAT daarvoor was, maar aangezien de server waar het op MOET draaien mysql 3.23 heeft bestaat die functie niet. Nu heb ik een functie gevonden die GROUP_CONCAT simuleerd namelijk:
SQL:
1
2
3
4
5
6
7
8
| set @result = ''; select @result := concat(@result, name, ', ') from oefs_metadata_link, oefs_metadata where assignmentID = 1 and ID = metadataID; select @result as Vakken; |
Ik weet alleen niet hoe ik verder moet. Dit is de huidige Query ( Zwaar versimpeld, maar geldig voor de vraag ) en je moet SAMENGEVOEGD dus vervangen door de functie, maar hoe??
SQL:
( De JOIN's moet je er even bijverzinnen )1
2
3
| SELECT `oefs_assignments`.*, SAMENGEVOEGD(`oefs_metadata`.`name`) FROM `oefs_assignments`, `oefs_metadata`, `oefs_metadata_link` WHERE `oefs_assignments`.`title` LIKE '%' |
Dit is de dblayout ( Ook versimpeld ):
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| CREATE TABLE `oefs_assignments` ( `ID` int(11) unsigned NOT NULL auto_increment, `title` varchar(50) NOT NULL default '', PRIMARY KEY (`ID`) ); CREATE TABLE `oefs_metadata` ( `ID` int(11) unsigned NOT NULL auto_increment, `catID` int(11) unsigned NOT NULL default '0', `name` varchar(50) NOT NULL default '', PRIMARY KEY (`ID`) ); CREATE TABLE `oefs_metadata_cats` ( `ID` int(11) unsigned NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', PRIMARY KEY (`ID`) ); CREATE TABLE `oefs_metadata_link` ( `assignmentID` int(11) unsigned NOT NULL default '0', `metadataID` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`assignmentID`,`metadataID`) ); |