我需要拆分其主要部分中的任何mysql select语句:SELECT
,FROM
,所有联接(如果有的话),WHERE
(如果存在),GROUP BY
(如果存在), HAVING
(如果存在的话),ORDER BY
(如果存在的话),LIMIT
(如果存在的话)......使用正则表达式拆分select语句
我尝试使用正则表达式,但我不是很好的他们... 对于Select the正则表达式很简单(任何SELECT在字符串开头-^SELECT
开始),但之后我偶然发现......我所知道的是'FROM'不能包含在()中 - 这将意味着它来自一个子查询...我想这一切select(JOINS,WHERE,GROUP BY等)的其他部分将与此规则匹配... 但我不知道如何编写这样的规则...并且我希望有人可以帮助我...
SELECT语句:
SELECT SQL_CALC_FOUND_ROWS (SUM(TIME_TO_SEC(audioMelodii.durata))/60) AS durataTotal, (SELECT COUNT(audioMelodii.id) FROM audioMelodii) AS nrMelodii, audioArtisti.nume AS artist, audioAlbume.*
FROM audioAlbume
LEFT OUTER JOIN audioMelodiiAlbume ON (audioMelodiiAlbume.idAlbum=audioAlbume.id)
LEFT OUTER JOIN audioMelodii ON (audioMelodii.id=audioMelodiiAlbume.idMelodie)
LEFT OUTER JOIN audioArtisti ON (audioAlbume.idArtist=audioArtisti.id)
WHERE audioAlbume.idArtist='$idArtist'
GROUP BY audioAlbume.id
ORDER BY dataLansare DESC, id DESC
LIMIT 0,10
我要寻找的结果会是这样的:
$STATEMENT['SELECT']='SELECT SQL_CALC_FOUND_ROWS (SUM(TIME_TO_SEC(audioMelodii.durata))/60) AS durataTotal, (SELECT COUNT(audioMelodii.id) FROM audioMelodii) AS nrMelodii, audioArtisti.nume AS artist, audioAlbume.*';
$STATEMENT['FROM']='FROM audioAlbume';
$STATEMENT['JOINS']='LEFT OUTER JOIN audioMelodiiAlbume ON (audioMelodiiAlbume.idAlbum=audioAlbume.id)
LEFT OUTER JOIN audioMelodii ON (audioMelodii.id=audioMelodiiAlbume.idMelodie)
LEFT OUTER JOIN audioArtisti ON (audioAlbume.idArtist=audioArtisti.id)';
$STATEMENT['WHERE']="WHERE audioAlbume.idArtist='$idArtist'";
等等
非常感谢! 一切顺利!