2010-08-31 5 views
1

Table IMAGES:requête SQL et obtenir le résultat pour la valeur de clé étrangère (non id)

  • columns- imageID, Image, and categoryID*(this being the foreign key)

Table CATEGORIES:

  • columns categoryID, Category

et peform requête pour exemple:

$sql = "SELECT categoryID FROM IMAGES WHERE image = 'exampleImage'"; 

j'obtenir le résultat comme un nombre entier de la catégorie ID i.e. 1

Ma question est quelle serait la requête pour afficher la catégorie que l'ID appartient? Ou des suggestions sur la façon de contourner plusieurs requêtes.

Répondre

2

Vous voulez utiliser une jointure interne il renvoie les enregistrements correspondant basés sur la joindre des critères.

SELECT Images.CategoryID, Category.Category 
FROM IMAGES 
INNER JOIN Category ON Category.CategoryID = Images.CategoryID 
WHERE image = exampleimage 
0

utilisation simple jointure gauche:

SELECT imageID, Image, IMAGE.categoryID, CATEGORIES.Category 
FROM IMAGES 
LEFT JOIN CATEGORIES 
ON IMAGES.categoryID = CATEGORIES.categoryID 
WHERE image = 'exampleImage' 

alias de table d'utiliser pour faire la déclaration plus courte:

SELECT imageID, Image, i.categoryID, c.Category 
FROM IMAGES i 
LEFT JOIN CATEGORIES c 
ON i.categoryID = c.categoryID 
WHERE image = 'exampleImage' 
+0

@knittl Même si une jointure gauche fonctionne, elle devrait être évitée si vous le pouvez. Ils sont beaucoup plus chers qu'une jointure interne. D'après la question, l'op mentionné qu'il avait une relation de clé étrangère avec la table de catégories, ce qui signifie qu'il y aura toujours une valeur correspondante. Donc, il devrait vraiment utiliser une jointure interne et pas à gauche. Il voudrait seulement utiliser une gauche s'il y avait une possibilité de ne pas correspondre à la valeur mais voulait quand même voir le résultat de l'image. – spinon

+0

@knittl Merci beaucoup pour vos conseils :) – slexAtrukov

+0

@spinon: il peut toujours avoir des catégories avec la valeur NULL - ces lignes seront omises dans le résultat lors de l'utilisation d'une jointure interne. Cela dépend du schéma, du résultat souhaité, etc. – knittl

Questions connexes