2011-10-27 3 views
-2

tableau categories (TABLE_CATEGORIES), qui ont des champs: categories_id, parent_idcomment écrire la commande de requête dans mysql

tableau categories_description (TABLE_CATEGORIES_DESCRIPTION) qui ont des champs: categories_id, categories_name,

maintenant, selon $cpath=parent_id Je veux obtenir le categories_name et categories_id, ceci est ma commande, mais il montre une erreur de grammaire.

$query = "select c.categories_id, cd.categories_name from " . 
TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd 
          where c.categories_id=cd.categories_id and c.parent_id=".$cPath; 

l'erreur: 1064 Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près « » à la ligne 2

+2

Pouvez-vous nous dire quelle erreur vous obtenez? – Flimzy

+3

Et quelle est la valeur de $ query après interpolation? – symcbean

+0

Si vous ne publiez pas votre valeur de requête $ avant de l'envoyer à db, nous ne pouvons pas vous aider plus ... – Marco

Répondre

0

Vous devez utiliser

SELECT cd.categories_id, cd.categories_name 
FROM `TABLE_CATEGORIES_DESCRIPTION` cd 
    INNER JOIN `TABLE_CATEGORIES` c 
    ON cd.categories_id = c.categories_id 
WHERE c.parent_id = your_id 

ÉDITÉE pour refléter la question de l'utilisateur modifié:
Etes-vous sûr que "TABLE_CATEGORIES" et "TABLE_CATEGORIES_DESCRIPTION" ne contiennent pas d'espaces blancs ou de caractères étranges?
Si c'est le cas, vous devez les entourer de guillemets.

+0

Votre requête ne fait pas de différence? (autre que la jointure implicite vs explicite, et mieux formatée) – Marcus

+0

@Marcus: Eh bien, je pense que l'utilisation de 'JOIN' est meilleure que l'utilisation de' WHERE' (même si un moteur le convertit quand il se rend compte de la requête); de toute façon OP ne nous a donné rien d'autre à travailler;) – Marco

+0

Je suis totalement d'accord avec cela, juste question que cela ne résoudrait pas le problème;) – Marcus

0

jointure interne peut aider ...

SELECT c.categories_id, cd.categories_name DE TABLE_CATEGORIES c INNER JOIN TABLE_CATEGORIES_DESCRIPTION cd = ON c.categories_id cd.categories_id où c.parent_id = $ cPath

Veuillez également cocher ce code:

$ query = "sélectionnez c.categories_id, cd.categories_name from". TABLE_CATEGORIES. "c". TABLE_CATEGORIES_DESCRIPTION. "cd où c.categories_id = cd.categories_id et c.parent_id = '". $ cPath. "'";

+0

Il effectue en fait une jointure interne déjà. C'est ce qu'on appelle une jointure implicite. – Marcus

Questions connexes