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 
Другие вопросы по тегам