Синтаксическая ошибка, нужна помощь

  • Автор темы Speckau
  • Обновлено
  • 15, May 2024
  • #1
Всем добрый день

Спасибо, что попытались помочь в первую очередь.

Мой вопрос о том;

Я пытаюсь написать запрос sql, который выполнит следующее

1. Когда пользователь вводит определенный код терминала, sql возвращает результаты для этого терминала.

2. Когда пользователь вводит код терминала с маской CN, запрос sql возвращает все терминалы, у которых есть CN в начале этого терминала.

Я знаю, что, вероятно, здесь придется использовать CASE

Пока что я получил,

 
 SELECT sm.terminalid as terminalcode,
 sm.sums as Latest_sums
from sums1 sm

 CASE

 WHEN sm.terminalid = : p_terminal THEN sm.sums = (SELECT max(ss.sums) from sums ss WHERE ss.terminalid = : p_terminal)

WHEN sm.terminalid = : p_terminal AND : p_terminal LIKE 'CN%' THEN sm.sums = (SELECT sm1.sums FROM sums1 sm1
 WHERE sm1.terminalid = : p_terminal
 AND : p_terminal LIKE 'CN%')
 ELSE 'Incorrect Terminal ID'
 END


Код (разметка): Может ли кто-нибудь помочь мне, где я ошибаюсь, поскольку выбор не возвращает несколько результатов при вводе CN.

заранее спасибо

Speckau


Рег
24 Jun, 2012

Тем
65

Постов
195

Баллов
540
  • 10, Jun 2024
  • #2
для начала проверьте свой запрос напрямую, используя phpmyadmin, teamsql и т. д. (я большой поклонник sqlyog) Если это так сложно, как этот, создайте образец данных в скрипте MySQL и поделитесь ссылкой.

Это немного больше работы с вашей стороны, но поможет нам помочь вам. Я часто использую операторы case, но не использовал имеющийся у вас синтаксис, поэтому нужно это проверить.

И я предполагаю, что этот код — это всего лишь те фрагменты, над которыми вы работаете, потому что порядок неправильный и т. д. Что должны показывать выходные данные?
 

Mantra


Рег
02 May, 2013

Тем
82

Постов
214

Баллов
624
  • 13, Jun 2024
  • #3
Можете ли вы справиться с этим на уровне приложения, а не на уровне базы данных? Возможно, удастся получить желаемый результат с помощью CASE WHEN THEN..., но я бы лично справился с этим через приложение, а не пытался заставить базу данных справиться с этим.

И я бы предпочел хранимую процедуру или представление прямому запросу в подобных ситуациях, если бы я собирался использовать базу данных для обработки логики.
 

Граф1


Рег
20 Oct, 2015

Тем
66

Постов
186

Баллов
526
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно