J'essaie de rechercher plusieurs tables à la fois pour un terme de recherche. Ma requête est:RECHERCHE plusieurs tables dans SQL
SELECT item.ItemID
FROM Inventory.Item item
JOIN Inventory.Category catR // each item can be in several categories
ON catR.ItemID = item.ItemID
JOIN Category.Category cat
ON cat.CategoryID = catR.CategoryID
JOIN Inventory.Brand bran
ON bran.BrandID = item.BrandID
WHERE
item.Description LIKE '%' + @term + '%'
OR
item.Description LIKE '%' + @term
OR
item.Description LIKE @term + '%'
OR
item.Description = @term
OR
cat.CategoryName LIKE '%' + @term + '%'
//same pattern as item.Description used to search CategoryName
//...
OR
bran.BrandName LIKE '%' + @term + '%'
//same pattern as item.Description used to search BrandName
//...
Mais les résultats ne sont pas comme prévu. J'ai environ 50 articles dans la catégorie "Casement", mais quand terme == "Casement" seuls les articles qui ont "Casement" dans leur article.Description sera retourné.
Est-ce que je fais quelque chose de mal? Devrais-je faire cela d'une meilleure façon?
Essayez 'LEFT JOIN's. Tout inventaire qui manque d'une marque ("BrandID" est NULL ou est désintégré de manière référentielle) serait exclu par votre SQL, quel que soit son "Nom de Catégorie". – pilcrow