Правильный синтаксис SQL (комбинация PHP и MySQL)

#php #mysql #syntax #conditional-statements

#php #mysql #синтаксис #условные операторы

Вопрос:

у меня есть этот запрос :

 SELECT 
   CONCAT(CT.FIRSTNAME,' ', CT.LASTNAME) AS NAME,
   T.TYPE_OF_VISITOR_NAME AS TYPE_OF_VISITOR,
   I.INDUSTRY_NAME AS INDUSTRY
FROM 
   COMPANY CY, CONTACTS CT, INDUSTRY I, TYPE_OF_VISITOR T
WHERE
   CY.INDUSTRY_ID = I.INDUSTRY_ID
 AND CY.COMPANY_ID = CT.COMPANY_ID
 AND CT.TYPE_OF_VISITOR = T.TYPE_OF_VISITOR_ID
 AND '$searchType' LIKE '%$searchString%' 
  

где $searchType — значение из поля со списком, которое содержит 2 значения :

  • ИМЯ (это не распознается в базе данных, пока я использую CONCAT(CT.FIRSTNAME,' ', CT.LASTNAME) проблема в том, что при выборе пользователем COMPANY_NAME у меня будет неправильный синтаксис)
  • ИМЯ_КОМПАНИИ

и $searchString — это поле ввода для поиска.

в приведенном выше запросе. когда пользователь ищет что-либо под типом COMPANY_NAME, это работает. проблема в том, что я хочу иметь опцию поиска также для name (имя и фамилия). к сожалению, столбцы в моей базе данных — это FIRSTNAME и LASTNAME . которые я объединил в инструкции select.

Вопрос :

  • Каков правильный способ добиться поиска FIRSTNAME и LASTNAME без влияния на результат, когда пользователь хочет выполнить поиск COMPANY_NAME

Насколько это возможно, я хочу сделать это, используя только один запрос. Буду признателен за любую помощь. Спасибо

Ответ №1:

Вместо NAME значение поля со списком должно быть

 CONCAT(`CT`.`FIRSTNAME`,' ', `CT`.`LASTNAME`)
  

значения в поле со списком :

 1. CONCAT(`CT`.`FIRSTNAME`,' ', `CT`.`LASTNAME`)
2. `COMPANY_NAME`
  

Комментарии:

1. представьте, что пользователь видит "CONCAT(CT.FIRSTNAME,' ', CT.LASTNAME)" . Они будут волноваться.

2. В противном случае мы можем написать условие типа: if($SearchType == ‘NAME’){ $SearchType = «CONCAT(CT.FIRSTNAME,’ ‘, CT.LASTNAME)»; } ВЫБЕРИТЕ CONCAT (CT.FIRSTNAME,’ ‘, CT.LASTNAME) В КАЧЕСТВЕ ИМЕНИ, T.TYPE_OF_VISITOR_NAME КАК TYPE_OF_VISITOR, I.INDUSTRY_NAME КАК ОТРАСЛЬ ОТ КОМПАНИИ CY, КОНТАКТЫ CT, ОТРАСЛЬ I, TYPE_OF_VISITOR T ГДЕ CY. INDUSTRY_ID = I.INDUSTRY_ID И CY.COMPANY_ID = CT.COMPANY_ID И CT.TYPE_OF_VISITOR = T.TYPE_OF_VISITOR_ID И ‘$SearchType’ ПОХОЖИ НА ‘%$searchString%’