mysql - rij splitsen op een veld

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tineau

tineau

01/08/2007 12:25:00
Quote Anchor link
Hallo,

ik heb een probleem: in een database heb ik per rij aangegeven uit welk land een bepaald item afkomstig is. Dit doe ik door in het veld `oorsprong` de waarde 'DE/UK' weer te geven (dit item is dus afkomstig uit Duitsland en Engeland).

Nu wil ik graag alle items individueel weergeven; ik wil dus alle rijen in mijn database bij langs om elke rij die een `origin` veld heeft met meerdere waarden te splitsen (zie voorbeeld). Alle overige data moet dus blijven staan.

Ter illustratie:

Huidige situatie:
id1 - item1 - DE/UK
----------------------------------------
Nieuwe gewenste situatie :
id1 - item1 - DE
id2 - item1 - UK

iemand die mij op weg kan helpen? Ik kan geen logische manier bedenken om dit voor elkaar te krijgen!
 
PHP hulp

PHP hulp

06/05/2024 18:37:55
 
Josh

Josh

01/08/2007 12:49:00
Quote Anchor link
Je kunt wachten op de mensen die gaan zeggen dat je datamodel niet klopt. Je hebt niet goed genormaliseerd.
Als je toch op deze weg verder wenst te gaan, moet je je query-resultaat gaan bewerken met php met de functie explode()
 
Tineau

tineau

01/08/2007 12:53:00
Quote Anchor link
Ik wil op deze weg verder. Het enige alternatief is het handmatig bewerken van bestaande records om vervolgens de nieuwe er handmatig achteraan te plakken.

Dat is op zich een goede oplossing, maar het h-woord, daar houd ik niet zo van!
 
Josh

Josh

01/08/2007 12:59:00
Quote Anchor link
Dat handwerk (waar je ook eenmalig een scriptje voor kunt maken, indien het veel record betreft) weegt al snel op tegen het ingewikkelde scriptwerk wat je je nu op de hals wilt halen. En ook voor uitbreidingen in de toekomst zul je dit telkens weer tegen gaan komen...
 
Frank -

Frank -

01/08/2007 13:49:00
Quote Anchor link
Quote:
Ik wil op deze weg verder.
Veel succes toegewenst!

1 veld = 1 waarde

Maar ja, jij zult het wel beter weten dan die vele miljoenen dba's en uiterst intelligente wiskundigen...

Sterkte!

Ps. Mocht je toch iets verder kijken dan je neus lang is, wellicht is deze tutorial handig.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Tineau

tineau

02/08/2007 12:46:00
Quote Anchor link
pgFrank schreef op 01.08.2007 13:49:
Quote:
Ik wil op deze weg verder.
Veel succes toegewenst!

1 veld = 1 waarde

Maar ja, jij zult het wel beter weten dan die vele miljoenen dba's en uiterst intelligente wiskundigen...

Sterkte!

Ps. Mocht je toch iets verder kijken dan je neus lang is, wellicht is deze tutorial handig.


LEES JIJ WEL WAT IK VRAAG?
altijd die bijdehante figuren die overal forums lopen te verpesten met hun commentaar. Als dit soort bijdrages jouw norm zijn, dan is het geen wonder dat je 4000+ posts op je naam hebt staan!

En ga me A.U.B. niets vertellen over normalisatie. Dat heeft er namelijk niet echt wat mee te maken! Nogmaals: LEZEN!
[/frustratie]

ik pretendeer nergens dat ik het beter weet dan wie dan ook, ik heb alleen een probleem met een (1) veld in mijn tabel die in 4 jaar tijd door diverse gebruikers in een klein aantal gevallen (+/- 100 rijen op een totaal van 5000) verkeerd gevuld is. Inmiddels kan dit niet meer, ik heb een simpele regex toevoegd die het betreffende veld controleert op ingevoerde data, maar daarmeer blijft het probleem van de oude records bestaan.

Daar wil ik nu dus wat aan gaan doen, door de gemaakte fouten geautomatiseerd te herstellen, in plaats van het handmatig allemaal te bewerken. Daar zoek ik dus een oplossing voor.
 
Erik Rijk

Erik Rijk

02/08/2007 13:09:00
Quote Anchor link
tineau schreef op 02.08.2007 12:46:
pgFrank schreef op 01.08.2007 13:49:
Quote:
Ik wil op deze weg verder.
Veel succes toegewenst!

1 veld = 1 waarde

Maar ja, jij zult het wel beter weten dan die vele miljoenen dba's en uiterst intelligente wiskundigen...

Sterkte!

Ps. Mocht je toch iets verder kijken dan je neus lang is, wellicht is deze tutorial handig.


LEES JIJ WEL WAT IK VRAAG?
altijd die bijdehante figuren die overal forums lopen te verpesten met hun commentaar. Als dit soort bijdrages jouw norm zijn, dan is het geen wonder dat je 4000+ posts op je naam hebt staan!

En ga me A.U.B. niets vertellen over normalisatie. Dat heeft er namelijk niet echt wat mee te maken! Nogmaals: LEZEN!
[/frustratie]

ik pretendeer nergens dat ik het beter weet dan wie dan ook, ik heb alleen een probleem met een (1) veld in mijn tabel die in 4 jaar tijd door diverse gebruikers in een klein aantal gevallen (+/- 100 rijen op een totaal van 5000) verkeerd gevuld is. Inmiddels kan dit niet meer, ik heb een simpele regex toevoegd die het betreffende veld controleert op ingevoerde data, maar daarmeer blijft het probleem van de oude records bestaan.

Daar wil ik nu dus wat aan gaan doen, door de gemaakte fouten geautomatiseerd te herstellen, in plaats van het handmatig allemaal te bewerken. Daar zoek ik dus een oplossing voor.



Als Frank je verteld dat je verkeerd bezig bent kan je dat wel aannemen, vooral op database gebied hoef je hem niet zo snel tegen te spreken. Zoals ik het zie is het toch wel één van de experts op dit forum op dit gebied.

Kan me ook wel voorstellen dat je er lichtelijk gefrustreerd van raakt maar hij probeert je alleen maar te helpen ( de goeie weg bedoel ik dan ).
 
Josh

Josh

02/08/2007 13:39:00
Quote Anchor link
Ik zou een script maken die het stapsgewijs zo aanpakt:
  • tabel rij voor rij uitlezen
  • voor elke rij het veld 'oorsprong' explode("/",$row['oorsprong'])
  • als het aantal waarden in de array groter is dan 1, dan de huidige rij bijwerken en vanaf tweede item een nieuwe regel inserten in de database.
Gewijzigd op 01/01/1970 01:00:00 door Josh
 
Gerard M

Gerard M

02/08/2007 13:54:00
Quote Anchor link
Quote:
Huidige situatie:
id1 - item1 - DE/UK
----------------------------------------
Nieuwe gewenste situatie :
id1 - item1 - DE
id2 - item1 - UK


Ik denk dat je met wat if'jes en regex een heel end moet komen, maar je krijgt dan een omslachtig iets, als het uberhaubt lukt.
 
Tineau

tineau

02/08/2007 21:54:00
Quote Anchor link
Mijn probleem heeft niets met database-opbouw of normalisatie te maken. het heeft te maken een slecht geprogrammeerd script wat ervoor heeft gezorgd dat gebruikers van een van mijn sites ongeldige data hebben kunnen invoeren in een database. Daarom werd ik vanmiddag een beetje pissed van het denigrerende toontje van Frank. Hij kan nog zo'n expert op wat voor gebied dan ook zijn, ik kom hier niet om te horen dat ik verder moet kijken dan mijn neus lang is!
PHPhulp was altijd een vriendelijke community, waar niet zoals op tweakers of phpfreakz gelijk `RTFM` of `ik heb net op google gekeken en de eerste tien zoekresultaten zijn van toepassing op jou probleem` geroepen wordt, en in dat opzicht vind ik dus dat phphulp er wel enigzins op achteruit gaat.
 
Mark L

Mark L

02/08/2007 22:05:00
Quote Anchor link
Goh, ik vind het juist een vooruitgang... Je word geholpen met dingen die je niet eens vraagt... wat een service!

PS: Je kan ook elke post positief bekijken en niet alles meteen zo persoonlijk opvatten ;-)

Frank heeft inderdaad altijd gelijk op DB gebied (ik heb nog nooit anders gezien)..

En het is toch juist goed dat we zo reageren? Als we dat niet deden, loop jij later misschien vast en dan denk je: Waarom hebben ze me dat niet eerder verteld?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.