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

  • Автор темы speckau
  • 58
  • Обновлено
  • 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

Тем
1

Постов
2

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

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

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

Mantra


Рег
02 May, 2013

Тем
4

Постов
9

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

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

Граф1


Рег
20 Oct, 2015

Тем
0

Постов
3

Баллов
3
Тем
49554
Комментарии
57426
Опыт
552966

Интересно