SQL присоединяется с помощью оператора Like

#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 '%%'