我需要拆分其主要部分中的任何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'";
等等
非常感謝! 一切順利!