으로 select 문을 분할 나는 그것의 주요 부분에 어떤 MySQL은 SELECT 문을 분할해야합니다 SELECT
, FROM
모든 조인 (가있는 경우), WHERE
(있는 경우), GROUP BY
는 (있는 경우) HAVING
(있는 경우), ORDER BY
(있는 경우), LIMIT
는 (있는 경우) ...는 정규 표현식
내가 정규식을 사용했지만, 내가 SELECT 위해 ... 그들과 함께 아주 좋은 아니에요 정규식은 간단했다 (문자열의 시작 부분에 오는 모든 선택 - ^SELECT
),하지만 그 후에 나는 만났다 ... 모든 것이 'FROM'이 (-)에 포함되어서는 안된다는 것을 알고있다 - 이것은 subselect에서 나온 것임을 의미한다. ... 그리고 나는 그 모두를 생각한다. select (JOINS, WHERE, GROUP BY 등)의 다른 부분은이 규칙과 일치합니다 ... 하지만 규칙을 작성하는 법을 모르겠지만 다른 사람이 나를 도울 수 있기를 바랍니다 ...
:
이 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'";
등 ...
대단히 감사합니다! 최고!