Firebird to My SQL запрос дает ошибку по запросу в моем PHP-скрипте
Этот вопрос, вероятно, дублирует, и за него проголосуют очень сильно, но я так отчаялся, что мне нужно спросить. Кто-нибудь может увидеть синтаксическую ошибку в этом запросе? Какие-либо предложения? Должен ли я публиковать весь файл сценария php?
SELECT
a.sifra_robe,
a.kod AS kod_artikla,
a.cenovnik,
a.akcija_od,
a.akcija_do,
a.cenamp_stara,
a.cenamp_sa_popustom,
a.datum_unosa,
a.sifra_kategorije,
a.id_podkategorije,
a.date_change,
a.kod_pr,
(SELECT
c.barkod
FROM tblbarkod c
WHERE c.sifra_robe = a.sifra_robe LIMIT 1) AS barkod,
REPLACE(a.artikal, '''', '.') AS artikal,
REPLACE(cast(A.OPIS as varchar(32000)), '''', '.') AS opis,
CAST(a.cenamp AS DECIMAL(18,2)) AS cenamp,
a.cenavp,
p.proizvodjac,
p.sifra_proizvodjaca,
CAST(SUM(l.kolicina) AS DECIMAL(18,2)) AS kolicina,
REPLACE(cast(list(distinct k.naziv) as varchar(32000)),'''','.') as model
FROM tblartikli a
INNER JOIN tblproizvodjac p ON p.sifra_proizvodjaca = a.sifra_proizvodjaca
LEFT JOIN tlokacija l ON l.sifra_robe = a.sifra_robe
LEFT JOIN tbl_art_komp ak on ak.sifra_robe = a.sifra_robe
LEFT JOIN tbl_kompatibila k on k.id = ak.id_kompatibile
WHERE a.id_podkategorije IN ($kat)
AND a.web_b2c = 1
AND (a.cenovnik = 'A'
OR a.cenovnik = '1'
OR a.cenovnik = 'R'
OR a.cenovnik = 'D'
OR a.cenovnik = 'N')
AND (a.cenovnik = 'D'
OR (l.sifra_magacina IN (1001, 1003, 1004, 1010, 1012, 1020, 1092)))
GROUP BY a.sifra_robe, a.kod, a.cenovnik, a.akcija_od, a.akcija_do, a.cenamp_stara, a.cenamp_sa_popustom, a.datum_unosa, a.sifra_kategorije, a.id_podkategorije, a.date_change, a.kod_pr, a.artikal, a.opis, a.cenamp, a.cenavp, p.proizvodjac, p.sifra_proizvodjaca
ORDER BY a.artikal ASC
Я получаю следующую ошибку:
Предупреждение: ibase_query(): динамическая ошибка SQL Код ошибки SQL = -104 Токен неизвестен - строка 31, столбец 54) в
1 ответ
SELECT FIRST 1 ...
в вашем подзапросе неверный синтаксис MySQL. Вам нужно использовать LIMIT 1 в конце подзапроса.
Фиксированный запрос:
SELECT
a.sifra_robe,
a.kod AS kod_artikla,
a.cenovnik,
a.akcija_od,
a.akcija_do,
a.cenamp_stara,
a.cenamp_sa_popustom,
a.datum_unosa,
a.sifra_kategorije,
a.id_podkategorije,
a.date_change,
a.kod_pr,
(
SELECT
c.barkod
FROM tblbarkod c
WHERE c.sifra_robe = a.sifra_robe
LIMIT 1
) AS barkod,
REPLACE(a.artikal, "''", '.') AS artikal,
REPLACE(cast(A.OPIS as char(32000)), "''", '.') AS opis,
CAST(a.cenamp AS DECIMAL(18,2)) AS cenamp,
a.cenavp,
p.proizvodjac,
p.sifra_proizvodjaca,
CAST(SUM(l.kolicina) AS DECIMAL(18,2)) AS kolicina,
REPLACE(cast(k.naziv as char(32000)),"''",'.') as model
FROM tblartikli a
INNER JOIN tblproizvodjac p ON p.sifra_proizvodjaca = a.sifra_proizvodjaca
LEFT JOIN tlokacija l ON l.sifra_robe = a.sifra_robe
LEFT JOIN tbl_art_komp ak on ak.sifra_robe = a.sifra_robe
LEFT JOIN tbl_kompatibila k on k.id = ak.id_kompatibile
WHERE a.id_podkategorije IN ($kat)
AND a.web_b2c = 1
AND (a.cenovnik = 'A'
OR a.cenovnik = '1'
OR a.cenovnik = 'R'
OR a.cenovnik = 'D'
OR a.cenovnik = 'N')
AND (a.cenovnik = 'D'
OR (l.sifra_magacina IN (1001, 1003, 1004, 1010, 1012, 1020, 1092)))
GROUP BY a.sifra_robe, a.kod, a.cenovnik, a.akcija_od, a.akcija_do, a.cenamp_stara, a.cenamp_sa_popustom, a.datum_unosa, a.sifra_kategorije, a.id_podkategorije, a.date_change, a.kod_pr, a.artikal, a.opis, a.cenamp, a.cenavp, p.proizvodjac, p.sifra_proizvodjaca
ORDER BY a.artikal ASC