2011-08-18 5 views
1

J'ai lu cette requête maintenant pendant environ 20 minutes et je ne vois pas ce qui ne va pas.Erreur MySQL, raison inconnue

SELECT SQL_CALC_FOUND_ROWS addressbook_people.first_name, 
     addressbook_people.last_name      , 
     addressbook_people.preferred_name    , 
     addressbook_companies3.name      , 
     addressbook_people.url       , 
     addressbook_groups5.name       , 
     addressbook_people.telephone1     , 
     addressbook_people.telephone2     , 
     addressbook_people.telephone3     , 
     addressbook_people.email1      , 
     addressbook_people.email2      , 
     addressbook_people.fax1       , 
     addressbook_people.fax2       , 
     root_countries13.name       , 
     root_territories14.name       , 
     root_cities15.name        , 
     addressbook_people.address1      , 
     addressbook_people.zip_postal1     , 
     addressbook_people.po_box      , 
     root_countries19.name       , 
     root_territories20.name       , 
     root_cities21.name        , 
     addressbook_people.address2      , 
     addressbook_people.zip_postal2 
FROM  addressbook_people 
WHERE (
        (
          addressbook_people.first_name  LIKE '%a%' 
        OR  addressbook_people.last_name  LIKE '%a%' 
        OR  addressbook_people.preferred_name LIKE '%a%' 
        OR  addressbook_companies3.name  LIKE '%a%' 
        OR  addressbook_people.url   LIKE '%a%' 
        OR  addressbook_groups5.name   LIKE '%a%' 
        OR  addressbook_people.telephone1  LIKE '%a%' 
        OR  addressbook_people.telephone2  LIKE '%a%' 
        OR  addressbook_people.telephone3  LIKE '%a%' 
        OR  addressbook_people.email1   LIKE '%a%' 
        OR  addressbook_people.email2   LIKE '%a%' 
        OR  addressbook_people.fax1   LIKE '%a%' 
        OR  addressbook_people.fax2   LIKE '%a%' 
        OR  root_countries13.name    LIKE '%a%' 
        OR  root_territories14.name   LIKE '%a%' 
        OR  root_cities15.name    LIKE '%a%' 
        OR  addressbook_people.address1  LIKE '%a%' 
        OR  addressbook_people.zip_postal1 LIKE '%a%' 
        OR  addressbook_people.po_box   LIKE '%a%' 
        OR  root_countries19.name    LIKE '%a%' 
        OR  root_territories20.name   LIKE '%a%' 
        OR  root_cities21.name    LIKE '%a%' 
        OR  addressbook_people.address2  LIKE '%a%' 
        OR  addressbook_people.zip_postal2 LIKE '%a%' 
       ) 
     ) 
     LEFT JOIN addressbook_companies AS addressbook_companies3 
     ON  addressbook_people.company_id = addressbook_companies3.id 
     LEFT JOIN addressbook_groups AS addressbook_groups5 
     ON  addressbook_people.group_id = addressbook_groups5.id 
     LEFT JOIN root_countries AS root_countries13 
     ON  addressbook_people.country1 = root_countries13.id 
     LEFT JOIN root_territories AS root_territories14 
     ON  addressbook_people.territory1 = root_territories14.id 
     LEFT JOIN root_cities AS root_cities15 
     ON  addressbook_people.city1 = root_cities15.id 
     LEFT JOIN root_countries AS root_countries19 
     ON  addressbook_people.country2 = root_countries19.id 
     LEFT JOIN root_territories AS root_territories20 
     ON  addressbook_people.territory2 = root_territories20.id 
     LEFT JOIN root_cities AS root_cities21 
     ON  addressbook_people.city2 = root_cities21.id 
ORDER BY LTRIM(addressbook_people.url)DESC 
LIMIT 0, 10 

Ceci est la sortie de mon filtre pour une table de données. Donc, ne pas tenir compte du fait que je cherche comme « a »

J'utilise PHPMyAdmin, lors de l'exécution du SQL dans une requête via la console de gestion Web je reçois l'erreur suivante

1064 - Vous avez un erreur dans votre syntaxe SQL; consultez le manuel qui

correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près « LEFT JOIN addressbook_companies AS addressbook_companies3 SUR adr » à la ligne 54

J'ai vérifié la ligne, c'est la début de mes jointures. Je ne vois pas de problème .. Quelqu'un peut-il aider s'il vous plaît? Je n'ai jamais été bon avec SQL.

+0

Il n'y a pas une limite peut-être la longueur de la requête dans la console de gestion Web, est-il? C'est une question assez longue. –

+0

je voudrais voir combien de temps cette requête devra être exécutée sur la table avec 1.000.000 lignes, ce qui n'est pas beaucoup :) – mkk

+0

c'est en fait pas si mal. À l'heure actuelle, j'ai 6000 lignes et il s'exécute en une fraction de seconde. Cela fait partie du filtrage des résultats ajax. Je vois très peu de retard, si court que je ne l'ai pas testé. – rlemon

Répondre

3

Vous devez faire vos JOIN s avant WHERE clause

+0

Ils sont après le 'where' déjà – hughes

+0

@Hughes, oui ils sont j'ai remarqué mon feuillet juste après que j'ai posté. –

+0

Juste pour clarifier: Le WHERE vient après les JOINS, pas avant. –