2012-08-30 8 views
0

J'ai PHP/MySQL demande, mais le développeur précédent l'a fait dans la base de donnéesMysql joindre plusieurs clé étrangère

tbl_cat columns: 

cat_id | cat_name 

tbl_products columns have cat_id assigned: 

category_1 | category_2 | category_3 

Ce que je dois faire est d'attribuer à tbl_cat.cat_name (category_1, category_2 etc ...)

Je sais que le as ici est faux, mais juste pour démontrer qu'il doit être quelque chose de semblable à ceci:

SELECT * FROM tbl_products 
LEFT JOIN tbl_cat 
ON category_1=cat_id AS cat_1 
AND category_2=cat_id AS cat_2 
AND category_3=cat_id AS cat_3 

Répondre

0

A 01 normalesyntaxe lors de l'utilisation de jointure est:

SELECT   
     table_alias_1.column_1 AS column_alias_1, 
     table_alias_2.column_2 AS column_alias_2, 
     table_alias_3.column_3 AS column_alias_3 
FROM table_1 AS table_alias_1 
LEFT JOIN table_2 AS table_alias_2 
    ON table_alias_1.column_1 = table_alias_2.column_2 
LEFT JOIN table_3 AS table_alias_3 
    ON table_alias_2.column_3 = table_alias_3.column_3; 

Peu importe si table_1 est le même que table_2 aussi longtemps qu'ils ont des alias différents, vous pouvez joindre une table pour lui-même.

Vous ne pouvez pas déclarer d'affectations dans des instructions select **. Un signe = dans une instruction select sera interprété comme un opérateur de comparaison et non comme un opérateur d'affectation.

** Il y a une exception à cette règle - une extension non standard fournie par MySQL qui ne fait pas partie de ANSI-SQL, mais qui est utilisée pour assigner des valeurs qui seront utilisées en dehors du select; l'opérateur d'affectation est := et non =; ceci est fondamentalement un remplacement de la norme ANSI SQL SELECT ... INTO ....

+0

Merci à cela semble un peu compliqué, à la fin je viens de choisir la première catégorie de colonne dans l'instruction initiale et ensuite couru des déclarations séparées sur le reste –

+0

Il est un peu plus lent lorsque vous sélectionnez et joindre des données en PHP. SQL est optimisé pour la sélection, la jonction, le filtrage, le tri, le groupement, etc. Mais si cela fonctionne pour vous pour l'instant c'est bien, plus de temps pour apprendre le SQL. –