#sql #sql-server #sql-server-2012
#sql #sql-сервер #sql-server-2012
Вопрос:
У меня есть такие таблицы
tableUser:
id | name
----- ------------
1 | John Smith
2 | Maria
3 | peter
tableComplaint
id | ComplaintIssue | User
----- ------------------ -----
1 | Isssue1 | 1
2 | Issue nth | 3
3 | Issue infinity | 4
Теперь я пытаюсь получить вывод из приведенного ниже запроса
select
tc.id, tc.complaintissue, tu.name tc
from
tablecomplaint tc
join
tbuser tu on tu.id = tc.user
where
tc.comlaintissue like '%%' or tu.name like '%%'
но я не могу включить оператор like tu.name
.
Я хочу, чтобы моему выходному запросу также разрешался поиск по имени пользователя.
Комментарии:
1. Ваш sql выглядит для меня нормально (кроме орфографической ошибки в слове жалоба в предложении where). Что не работает?
2. Что такое тип
name
данных? Некоторые типы не могут использоваться сLIKE
оператором.3. Что это значит: «Я не могу поставить оператор like на tu.name «?
4.
tc.name tc from tablecomplaint tc
неверно, как естьwhere tc.comlaintissue
. Прочитайте SQL, который вы пишете, и сообщение об ошибке, которое вы получаете.
Ответ №1:
у вас «tc» появляется дважды
select tc.id, tc.complaintissue, tu.name [->]tc from tablecomplaint [->] tc
join tbuser tu on tu.id = tc.user
where tc.comlaintissue like '%%' or tu.name like '%%'
вы пытались иметь в виду?
select tc.id, tc.complaintissue, tu.name from tablecomplaint tc
join tbuser tu on tu.id = tc.user
where tc.comlaintissue like '%%' or tu.name like '%%'
Ответ №2:
это сработало,
select
tc.id, tc.complaintissue, tu.name tc
from
tablecomplaint tc
join
tbuser tu on tu.id = tc.user
where
tc.complaintissue like '%%' or tu.name like '%%'