Beste Devers,
Voor een website ben ik al een paar keer tegen hetzelfde probleem aangelopen. Tot op dit moment was het op te lossen door in php een tweede query te starten. Maar nu zal ik nog veel vaker een query moeten draaien een dat gaat mij te ver.
Ik zou graag meerdere resultaten uit een JOIN willen binden.
Ik kom dit probleem op een aantal punten tegen. Ik zal de meest complexe voorleggen kijken of jullie daarmee kunnen helpen.
Op de website moet ik columns inlezen. De tabel waar de columns in zijn opgeslagen heeft de volgende structuur. Nog geen indexen dat weet ik maar die zal ik op een later moment er op zetten.
Het kan echter zijn dat er meerdere gebruikers samen één column hebben geschreven. Daarom is er een aparte tabel doe gebruikers aan een column bint.
columnaut.column = de column.id
Daarnaast moet de voor en achter naam van de gebruiker uit de gebruikerstabel worden gehaald waar columnaut.gebruiker = gebruiker.id
Nu is het probleem dat ik de column uitlees en wil JOINEN op de andere tabbelen. Maar ik wil meerdere resultaten aan gebruikers kunnen binden. Is dit mogelijk. Mooiste zou zijn als het gewoon met 'standaard' query kan.
Dit kan volgens mij niet omdat columnaut meerder resultaten geeft.
Ik zou het resultaat graag als volgt willen zien:
Als dit niet mogelijk is hoor ik het graag. Wil het wel zou ik graag horen hoe ik dat zou moeten doen. Een zoek tocht op google en afspeuren in de mysql docs heeft mij niet echt geholpen.
Ik maak gebruik van PDO. Het is mij al opgevallen dat die soms met wat rare trucjes net iets meer kan dan SQL zelf.
BvD
Daniël
Voor een website ben ik al een paar keer tegen hetzelfde probleem aangelopen. Tot op dit moment was het op te lossen door in php een tweede query te starten. Maar nu zal ik nog veel vaker een query moeten draaien een dat gaat mij te ver.
Ik zou graag meerdere resultaten uit een JOIN willen binden.
Ik kom dit probleem op een aantal punten tegen. Ik zal de meest complexe voorleggen kijken of jullie daarmee kunnen helpen.
Op de website moet ik columns inlezen. De tabel waar de columns in zijn opgeslagen heeft de volgende structuur. Nog geen indexen dat weet ik maar die zal ik op een later moment er op zetten.
SQL:
1
2
3
4
5
6
7
8
9
10
| CREATE TABLE IF NOT EXISTS `column` ( `id` int(100) NOT NULL AUTO_INCREMENT, `cat` int(5) NOT NULL, `titel` text NOT NULL, `column` longblob NOT NULL, `datum` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `afbeelding` text NOT NULL, PRIMARY KEY (`id`), KEY `cat` (`cat`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; |
Het kan echter zijn dat er meerdere gebruikers samen één column hebben geschreven. Daarom is er een aparte tabel doe gebruikers aan een column bint.
SQL:
1
2
3
4
5
6
| CREATE TABLE IF NOT EXISTS `columnaut` ( `column` int(11) NOT NULL, `gebruiker` int(11) NOT NULL, UNIQUE KEY `column` (`column`,`gebruiker`), KEY `gebruiker` (`gebruiker`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; |
columnaut.column = de column.id
Daarnaast moet de voor en achter naam van de gebruiker uit de gebruikerstabel worden gehaald waar columnaut.gebruiker = gebruiker.id
Nu is het probleem dat ik de column uitlees en wil JOINEN op de andere tabbelen. Maar ik wil meerdere resultaten aan gebruikers kunnen binden. Is dit mogelijk. Mooiste zou zijn als het gewoon met 'standaard' query kan.
SQL:
1
2
3
| SELECT column.*, gebruiker.voornaam, gebruiker.achternaam, FROM column JOIN columnaut ON column.id = columnaut.column JOIN gebruiker on columnaut.gebruiker = gebruiker.id |
Dit kan volgens mij niet omdat columnaut meerder resultaten geeft.
Ik zou het resultaat graag als volgt willen zien:
| id | titel | column | ... | gebruikers |
| 1 | Knappende zeepbel | De zeepbel is geknapt | ... | (1)Jan Pieters (2)Pieter Jansen |
Als dit niet mogelijk is hoor ik het graag. Wil het wel zou ik graag horen hoe ik dat zou moeten doen. Een zoek tocht op google en afspeuren in de mysql docs heeft mij niet echt geholpen.
Ik maak gebruik van PDO. Het is mij al opgevallen dat die soms met wat rare trucjes net iets meer kan dan SQL zelf.
BvD
Daniël