Toon posts:

[MySQL] Gevonden records splitten in meerdere records

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb onderstaande tabel in MySQL en wil graag dat de kolom 'reeks' gesplit wordt zodat ik meerdere rows per record krijg. (Zie gewenste uitkomst)

Tabel:
recordidnaamreeks
1Jaap23,512
2Piet537,213,12


Gewenste uitkomst van de query:
recordidnaamreekswaarde
1Jaap23
1Jaap512
2Piet537
2Piet213
2Piet12


Helaas kan ik de 'reeks' waarden niet op een andere manier in m'n tabel verwerken of er een andere tabel voor maken. 'reeks' is een vast gegeven.

Iemand een idee hoe ik dit voor elkaar krijg?

Met PHP splitten van de uitkomst oid. is ook geen optie aangezien dit een sub-query is voor een grotere query.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Je zal het toch echt via PHP moeten splitsen, of je datamodel aanpassen. Comma seperated values in een relationele database slaat nergens op. Normaliseer die tabel liever.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Je tracht een one to many associatie met comma seperated values weer te geven, terwijl je veel beter, zoals -NMe- al zegt beter je datamodel kan normaliseren. Het is dan gebruikelijk, en logisch, om een records tabel aan te maken, met daarin id en de naam, en een reekswaardes tabel, met daarin een id, een record_id, die verwijst naar records.id (eventueel met een foreign key aangeven), en de waarde ervan.

Je krijgt dan dus zoiets.

records:
idname
1Jaap
2Piet


recordvalues:
idrecord_idvalue
1123
2115
3217
42110


Wat dan de volgende waardes oplevert: Jaap -> 23, 15 ; Piet -> 17, 110.

Overigens is de naamgeving zoals ik die hierboven gebruik aan te bevelen. Ik ben niet heel erg zeker over recordvalues, misschien dat iemand dat kan bevestigen / verbeteren?

Sowieso is één taal duidelijker. Ook is het gebruikelijk om in elke tabel (behalve een join tabel bijvoorbeeld) een id (als primary key) op te nemen, en niet tabelnaam_id. Als laatste staan meestal de tabelnamen in het meervoud, alhoewel niet iedereen dat met elkaar eens is.

Hoop dat het wat duidelijker is zo, je hebt iniedergeval weer wat zoekwoorden :) .

[ Voor 4% gewijzigd door JHS op 31-10-2005 19:30 ]

DM!


Verwijderd

Topicstarter
Ik begrijp dat ik de MySQL manual goed heb bekeken en dat er dus geen optie/functie is die ik over het hoofd heb gezien. Ik zal een andere oplossing moeten vinden wat er waarschijnlijk op neer komt dat er een extra tabel bij zal moeten komen.