Ik vroeg me af of het mogelijk was om een select query te draaien waarbij alleen columns getoond worden die aan bepaalde criteria voldoen, in mijn geval beginnen met c$
De volgende query werkt goed;
show columns from table1 where (substr(field,1,2)='c$')
Nu wil ik de resultaten verwerken in een query en de daadwerkelijke data alleen uit die columns halen. Ik wil dus eigenlijk naar de volgende query toe;
select show columns from table1 where (substr(field,1,2)='c$') from table1
het is een database waarbij de gebruiker kolommen moet kunnen toevoegen. Deze custom kolommen beginnen altijd met c$ .
De query moet dus altijd een lijst geven met alle data in de custom kolommen, als de gebruiker een nieuwe toevoegd moet deze ook dynamisch in de query meegenomen worden
Najah, ik ken applicaties zat waarbij gebruikers 'vrije velden' kunnen toevoegen, dat is hetzelfde idee als hij heeft denk ik..
Het is wel riskant / gevoelig.. maar als je het goed afschermt dan is het wel te doen denk ik :)
Haha, dit wou ik zelf ook weleens in een tool! Alleen ik denk dat het vrij lastig is..
Wat je eventueel we zou kunnen proberen is het in een stored procedure te doen? Die kan alle kolommen fetchen en dat schrijf je dan in een nieuwe query die je uiteindelijk uitvoert :)
Even een grof schetsje, zitten zeker weten nog fouten in :p
CREATE PROCEDURE naamVanJeFunctie()
BEGIN
DECLARE column VARCHAR(50);
DECLARE thequery TEXT
DECLARE columns TEXT
DECLARE cur1 CURSOR FOR SELECT columnname FROM INFORMATIONSCHEMA.TABLES WHERE tablename = 'table1' AND SCHEMA = 'db';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET noresultsleft=1;
SET noresultsleft = 0;
SET thequery = 'SELECT ';
OPEN cur1;
WHILE noresultsleft=0 DO
FETCH cur1 INTO column;
SET columns = CONCAT(column,', ');
END WHILE
SET thequery = CONCAT(thequery,columns,' FROM sometable');
SET noresultsleft = 0;
CLOSE cur1;
PREPARE stmt FROM @thequery;
EXECUTE stmt;
DEALLOCATE stmt;
END;
Najah, ik ken applicaties zat waarbij gebruikers 'vrije velden' kunnen toevoegen, dat is hetzelfde idee als hij heeft denk ik..
Dat geloof ik nooit... Alé, ze kunnen wel eigen veld toevoegen, maar dan niet op deze manier... Kijk eens naar de manier hoe een phpBB2 (ik weet niet op ze het in 3 ook zo doen) zijn configuration tabel opslaat in de database....
Een ander voorbeeld waar dit erg ver uitgewerkt is, is Magento. Webshop systeem, met producten die tot in het oneindige custom worden gemaakt zo ongeveer.
velden aanmaken is een volledig veilige methode waarbij de gebruiker datatypes kan kiezen en het systeem op het meest rustige moment de velden toevoegd. Dit is tevens iets waar ik geen invloed op heb dus ook niks aan kan doen.
@KEes; dat ziet er erg chique uit. Is dit allemaal MySQL, dit is volledig nieuw voor mij.. :( Is er ergens een goede tutorial te vinden over het uitvoeren van Stored Procedures?
velden aanmaken is een volledig veilige methode waarbij de gebruiker datatypes kan kiezen en het systeem op het meest rustige moment de velden toevoegd.
Dream on boy, dream on....
Al eens gedacht aan wat er gebeurt als de gebruiker velden gaat veranderen en of verwijderen en dan plots systeemvelden tegen komt? Veel plezier om dat op te lossen!
Mij niet gezien....