Я пытается выполнить запрос SQL в Visual Studio asp.net, но я получаю эту ошибку:Ошибка в SQL запросе
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' AND JobID = jn.ID GROUP BY JOBID)) as Delivered, ' at line 1
Но я не могу видеть, где проблема.
private static string SearchSQL
{
get{
return @" set @sql = null;
select
group_concat(distinct
concat(
'max(case when PieceType = ''',
PieceType,
''' then AdvisedQty end) AS ',
concat(PieceType)
)
)into @sql
FROM customer c
LEFT JOIN job_address ja ON c.AccountCode = ja.Code AND c.Company_ID = ja.Company_ID
JOIN AddressType jat ON ja.AddressType = jat.ID and jat.Description = ''Debtor''
LEFT JOIN job_new jn ON ja.JobID = jn.ID
LEFT JOIN job_pieces jp ON ja.JobID = jp.ID
WHERE c.Company_ID = ?compid;
set @sql = concat('select
c.Name,
COUNT(distinct jn.ID) as Jobs,
SUM((select COUNT(ID) from jobstat where Status = ''DEL'' AND JobID = jn.ID GROUP BY JOBID)) as Delivered,
SUM((select COUNT(ID) from jobstat where Status = ''POD'' AND JobID = jn.ID GROUP BY JobID)) as POD,
(select COUNT(job_debriefs.ID) from job_debriefs WHERE JobID = jn.JobNo) as Debriefs,
sum(jn.OutTurn) as Outturn,
SUM(jn.ActualWeight) as GrossWt,
SUM(jn.CBM) as CBM,
jn.Department,
(SELECT Name FROM job_address WHERE AddressType =3 AND JobID = jn.ID) as CollectName,
(SELECT Name FROM job_address WHERE AddressType =2 AND JobID = jn.ID) as DeliverName,
', @sql, '
FROM customer c
LEFT JOIN job_address ja ON c.AccountCode = ja.Code AND c.Company_ID = ja.Company_ID
JOIN AddressType jat ON ja.AddressType = jat.ID and jat.Description = ''Debtor''
LEFT JOIN job_new jn ON ja.JobID = jn.ID
LEFT JOIN job_pieces jp ON ja.JobID = jp.ID
WHERE c.Company_ID = ?compid
GROUP BY c.ID');
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
";
}
}
Ok Я установил одиночные кавычки, но теперь ошибка подходя является:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?compid GROUP BY c.ID' at line 19
Он находит CompID так это еще не проблема
вы можете получить более полезное сообщение об ошибке, если вы попытаетесь напрямую запустить SQL-код в своей СУБД. –
@TheTTGGuy Я попытался выполнить запрос в MySQL Workbench, но это дало ошибку: 'Код ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с max (случай, когда PieceType = «Carton», а затем конец AdvisedQty). AS Carton, max (случай, когда «в строке 13» – user123456789
есть причина, по которой вы есть две скобки вокруг этой строки? Вам может понадобиться только одна (это может быть не проблема, но попробовать ее с помощью одиночных парнеров) – nomistic