2014-07-03 4 views
1

i ont cette requête:correcte syntaxe SQL (PHP et MySQL Combo)

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 est une valeur à partir d'une zone de liste déroulante qui contient 2 valeurs:

  • NOM (ce n'est pas reconnu dans la base de données aussi longtemps que je l'utilise CONCAT(CT.FIRSTNAME,' ', CT.LASTNAME) le problème est que lorsque l'utilisateur choisi COMPANY_NAME je vais avoir mauvaise syntaxe)
  • COMPANY_NAME

et $searchString est une zone de saisie pour la recherche.

dans la requête ci-dessus. Lorsque l'utilisateur recherche quelque chose sous le type COMPANY_NAME, cela fonctionne. le problème est que je veux avoir une option de recherche aussi pour le nom (prénom et nom de famille). Malheureusement, les colonnes de ma base de données sont FIRSTNAME et LASTNAME. que j'ai concaténé dans l'instruction select.

Question:

  • Quelle est la bonne façon de parvenir à la recherche de FIRSTNAME et LASTNAME sans affecter le résultat lorsque l'utilisateur veut rechercher COMPANY_NAME

Autant que possible, je veux faire ceci en utilisant une seule requête. Toute aide serait très appréciée. Merci

Répondre

0

Au lieu de NAME, la valeur de zone de liste déroulante doit être

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

valeurs zone de liste déroulante:

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

imaginer utilisateur voir '" CONCAT (CT.FIRSTNAME, » », CT.LASTNAME) "'. Ils vont paniquer. – Yaje

+0

Sinon, nous pouvons écrire une condition comme: if ($ searchType == 'NOM') {$ searchType = "CONCAT (CT.FIRSTNAME, '', CT.LASTNAME)"; } SELECT CONCAT (CT.FIRSTNAME, » », CT.LASTNAME) que le nom, T.TYPE_OF_VISITOR_NAME AS TYPE_OF_VISITOR, I.INDUSTRY_NAME AS INDUSTRIE DE LA SOCIETE CY, CONTACTS CT, INDUSTRIE I, T TYPE_OF_VISITOR OÙ CY.INDUSTRY_ID = I.INDUSTRY_ID ET CY.COMPANY_ID = CT.COMPANY_ID ET CT.TYPE_OF_VISITOR = T.TYPE_OF_VISITOR_ID ET LIKE '$ searchType' '% $% searchString' – bini